我是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)
。
非常感谢任何帮助!
答案 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
支持非常有效的矢量化计算,您应该使用它。但除非我知道你究竟想要实现什么,否则我无法真正帮助你。 (如果你想要的只是A
和B
的最终值,那就像A=A+cols;B=B+cols*rows;
一样简单。)