В старых версиях MATLAB имелись веские основания избегать использования i
иj
в качестве имен переменных - ранние версии MATLAB JIT были не достаточно умен , чтобы сказать , были ли вы использовать их в качестве переменных или мнимых единиц, и будет , следовательно , отключите много других возможных оптимизаций.
Следовательно, ваш код будет работать медленнее только благодаря наличию переменных i
и j
как переменных, и ускорится, если вы измените их на что-то другое. Вот почему, если вы прочитаете большую часть кода MathWorks, вы увидите ii
и jj
довольно широко будете использовать его в качестве индексов цикла. Некоторое время MathWorks, возможно, даже неофициально советовал людям делать это самостоятельно (хотя они всегда официально советуют людям программировать на элегантность / ремонтопригодность, а не на то, что делает текущий JIT, поскольку это движущаяся цель для каждой версии).
Но это довольно давно, и в настоящее время это проблема «зомби», которая на самом деле гораздо менее важна, чем многие все еще думают, но отказывается умирать.
В любой недавней версии, это действительно личное предпочтение, использовать i
или j
как имена переменных или нет. Если вы много работаете с комплексными числами, вы можете избегать i
и j
как переменные, чтобы избежать любого небольшого потенциального риска путаницы (хотя вы также можете / вместо этого захотеть использовать только 1i
или 1j
для еще меньшей путаницы и немного повысить производительность ).
С другой стороны, в моей типичной работе я никогда не имею дело с комплексными числами, и я считаю, что мой код более читабелен, если я чувствую себя свободным в использовании i
и в j
качестве индексов цикла.
Я вижу здесь много ответов, в которых говорится, что это не рекомендуется ... не говоря, кто делает это, рекомендуя. Вот степень фактических рекомендаций MathWorks из текущей документации для i
:
Поскольку я - функция, ее можно переопределить и использовать в качестве переменной. Однако лучше избегать использования i и j для имен переменных, если вы собираетесь использовать их в сложной арифметике. [...] Для скорости и улучшенной устойчивости вы можете заменить комплекс i и j на 1i.
i
,j
,k
как общие имена переменных цикла.