在Matlab中使用向量元素作为索引

时间:2014-01-24 17:47:02

标签: matlab for-loop

我为这个小问题做了一个毫无意义的例子:

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;

1 个答案:

答案 0 :(得分:0)

i是循环的索引变量(在每次迭代中i按顺序从1:n获取值。将此变量设置为j(或任何变量名称)将为每次迭代分配一个值。

i(1)是示例中的值0,因此就像说0=1一样。

只需在循环中使用stored_val = i即可获取当前值。在嵌套过程中,每个外循环变量都存在于所有内部变量中。所以,在最里面的循环里面做 i_all = [i1, i2, i3]并将此作为输入传递给函数。

另外,避免在MATLAB中使用ij作为任何类型的变量(参见:Using i and j as variables in Matlab