循环遍历列和行而不使用matlab中的Indexing

时间:2014-02-12 17:27:04

标签: matlab

我是matlab的新手,我正在研究MATLAB来创建一个循环,它将遍历每一列和每一行,然后随着时间的推移递增A和B.我知道你可以做索引,但我想逐步学习如何做。我已经为它提出了伪代码,但我正在努力克服MATLAB中的实际语法才能做到这一点。

伪代码:

For columns i 1-300;
    Increment A

    For rows j 1-4
        Increment B

    End
End

我一直试图开始工作的实际代码是:

%testmatrix = 4:300   Already defined earlier as a 4 row and 300 column matrix

for i = testmatrix (:,300)
    for j = testmatrix (4,:)
        B=B+1        
    end

    A=A+1
end

我不是100%确定我应该如何格式化代码,因此它会testmatrix(1,1)一直读到testmatrix (4,300)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以让它通过第一行来获取正确的列,然后通过该列。但是你不能从矩阵中提供你的运行值:

[rows cols] = size(testmatrix); %// rows=4, cols=300
for i = 1:cols
    for j = 1:rows
        temp = testmatrix (j,i); %// contains the element of your matrix at (j,i)
        B=B+1;
    end
    A=A+1;
end

分号;禁止输出到命令行。如果要在每一步输出A和B,请将其删除。

在这里,temp会在元素(1,1)(4,300)之间循环,您可以随心所欲地执行任何操作。请注意,这通常是执行大多数操作的低效方法。 Matlab支持非常有效的矢量化计算,您应该使用它。但除非我知道你究竟想要实现什么,否则我无法真正帮助你。 (如果你想要的只是AB的最终值,那就像A=A+cols;B=B+cols*rows;一样简单。)