Причина вы получите то, что вы видите, что в петля
for i=1:5
C{i} = 0
end
Вы не завершаете утверждение точкой с запятой. Что происходит в этом случае:
Первый раз через петлю массив клеток C инициализируется одним элементом 0
в позиции 1
. Результат выводится, потому что нет оконечной точки с запятой:
C =
[0]
Это показывает, С представляет собой массив ячеек с одним элементом - массив [0]
(все в Matlab представляет собой массив, даже скаляр).
После второго прохода через петлю for
, C представляет собой две-ячейку, массив, и отображается его содержимое:
C =
[0] [0]
т.д.
Если вы хотите точный вывод, который вы описываете ,
C_1 = 0 C_2 = 0 C_3 = 0 C_4 = 0 C_5 = 0
Вы бы хотели создать пять переменных, имя которых сгенерировано программно.Функция, которую вы можете использовать для этого assignin
, чей синтаксис assignin(workspace, varname, value)
Следующая петля делает именно то, что вы просите
clear all
for ii=1:5
assignin('base', sprintf('C_%d', ii), 0);
end
clear ii
whos
Это покажет, как вы создали пять переменных, C_1
через C_5
, со значениями установить на ноль.
Должно быть очевидно, как изменить этот код на нечто менее тривиальное.
В целом вы хотели бы использовать «обычные» массивы везде, где это возможно, из-за преимущества скорости и массивов ячеек, когда отдельные элементы различны - разные типы, размеры и т. Д. Хорошим использованием массива ячеек является для этикеток:
myLabels={'this', 'that', 'label'};
Как правило, если вам нужен массив из пяти значений, которые все равны нулю, то правый синтаксис почти всегда
myArray = zeros(1, 5);
Примечание - в Matlab, если вы напишете zeros(5)
это создаст квадратная матрица 5x5. В некоторых других пакетах, таких как FreeMat, создается матрица 1x5 ...
Возможный дубликат [Изменение имени переменной в цикле] (http://stackoverflow.com/questions/14416582/changing-variable-name-in-loop) – Shai
вам нужен массив или ячейка? Причина из вашего примера выглядит как ячейка. – fpe
Удалили ли вы предыдущий вопрос? Почему вы делаете повторяющиеся вопросы вместо улучшения существующих? это поведение спам SO. – Shai