我为这个小问题做了一个毫无意义的例子:
function a = prova ()
n=5;
i = zeros(n,1);
for i(1) = 1:n %Here is the problem, neither i{1} would work
disp('hello world');
end
a=4;
end
Matlab不喜欢我使用i(1)作为'for'循环的索引:
Error: File: prova.m Line: 4 Column: 6
Unbalanced or unexpected parenthesis or
bracket.
如果我用j替换i(1),一切正常。 是不是可以使用数组单元来存储不同循环的索引?
我必须做类似的事情:
...
for i5 = 1 : nChannel
for i6 = 1 : nChannel
for i7 = 1 : nChannel
for i8 = 1 : nChannel
for i9 = 1 : nChannel
for i10 = 1 : nChannel
A = aFunction(para, true, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
end %all fors
我想用以下代替:
...
for i(5) = 1 : nChannel
for i(6) = 1 : nChannel
for i(7) = 1 : nChannel
for i(8) = 1 : nChannel
for i(9) = 1 : nChannel
for i(10) = 1 : nChannel
A = aFunction(para, true, i_count, i);
end %all fors
目前这是我的解决方法:
for i5 = 1 : nChannel
i(5)=i5;
for i6 = 1 : nChannel
i(6)=i6;
for i7 = 1 : nChannel
i(7)=i7;
for i8 = 1 : nChannel
i(8)=i8;
答案 0 :(得分:0)
i
是循环的索引变量(在每次迭代中i
按顺序从1:n
获取值。将此变量设置为j
(或任何变量名称)将为每次迭代分配一个值。
i(1)
是示例中的值0,因此就像说0=1
一样。
只需在循环中使用stored_val = i
即可获取当前值。在嵌套过程中,每个外循环变量都存在于所有内部变量中。所以,在最里面的循环里面做
i_all = [i1, i2, i3]
并将此作为输入传递给函数。
另外,避免在MATLAB中使用i
和j
作为任何类型的变量(参见:Using i and j as variables in Matlab)