В старых версиях MATLAB, там используется, чтобы быть хорошей причиной, чтобы избежать использования i
и j
в качестве имен переменных - ранних версиях MATLAB JIT не были достаточно умны, чтобы сказать, были ли вы использовать их в качестве переменных или мнимых единиц, и поэтому будет отключать многие другие возможные оптимизации.
Таким образом, ваш код будет замедляться только при наличии и j
в качестве переменных и ускорится, если вы измените их на что-то другое. Вот почему, если вы прочитаете много кода MathWorks, вы увидите, что ii
и jj
довольно широко используются в качестве индексов цикла.Некоторое время MathWorks могла даже неофициально советовать людям делать это сами (хотя они всегда официально советуют людям программировать элегантность/ремонтопригодность, а не то, что делает текущая JIT, поскольку это - движущаяся цель каждой версии).
Но это довольно давно, и в настоящее время это немного проблема «зомби», которая на самом деле намного менее важна, чем многие люди все еще думают, но отказывается умирать.
В любой недавней версии, действительно личным предпочтением является использование i
и j
в качестве имен переменных или нет. Если вы выполняете большую работу со сложными числами, вы можете избежать и j
в качестве переменных, чтобы избежать небольшого потенциального риска путаницы (хотя вы также можете/вместо этого хотите использовать только 1i
или 1j
для еще более путаницы и немного более высокая производительность).
С другой стороны, в моей обычной работе я никогда не занимаюсь сложными числами, и я считаю, что мой код более читабельен, если я могу свободно использовать i
и j
как индексы цикла.
Я вижу много ответов здесь, что сказать Это не рекомендуется ... не говоря, кто делает это рекомендовать. Вот степень реальных рекомендаций MathWorks', из документации текущего выпуска для i
:
Поскольку я функция, она может быть переопределена и использовать в качестве переменной. Однако лучше избегать использования i и j для имен переменных, если вы собираетесь использовать их в сложной арифметике. [...] Для скорости и повышенной надежности вы можете заменить сложные i и j на 1i.
Конечно, я не буду отмечать это как таковое, но, судя по ответам, я бы сказал, что это «основано прежде всего на мнениях». ;-) Я лично не отказался бы от 'i',' j', 'k' как общих имен переменных цикла. –
@ A.Donda, это ваше ** ваше мнение;) – Shai
@Shai, это ваше последнее предложение в этом вопросе: «Почему они не должны использоваться в качестве переменных имен в Matlab?» Так что непонятно, почему вы отклоняете мое издание на свой вопрос ?! Я изменил свой заголовок на более конструктивный заголовок [«Почему не следует использовать i и j в качестве переменных в Matlab»] (http://stackoverflow.com/review/spected-edits/13138842) –