如何在matlab中保存for循环操作的输出

时间:2017-02-28 13:24:59

标签: for-loop

我有一个矩阵A,其大小为54x100。对于某些特定条件,我在A的每一行上执行一个操作。我需要保存此for循环的输出。我尝试过以下但是没有用。

S=zeros(54,100);
for i=1:54;
 Ri=A(i,:);
answer=mean(reshape(Ri,5,20),1);
S(i)=answer;
end

1 个答案:

答案 0 :(得分:0)

首先,根据您的问题判断我会推荐一些基本的Matlab教程,例如this,或者只是详细的文档,例如this

实际上可以帮助您解决问题;你可以这样做:

%% Make up A (since I don't know what it actually is)
n = 54; m = 100;
A = randn(n,m); % N x m matrix of random numbers

%% Loop over each row of A
S = cell(n,1);
for j = 1:n;
    Rj = A(j,:); % j'th row
    answer = mean(reshape(Rj,5,20),1); % some operation
    S{j} = answer; % store the answer in cell S
end

问题是你的答案不是单个数字(1x1矩阵)而是矢量,所以你得到了一个尺寸不匹配错误。上面我将answer s放入大小为n的单元格对象中。然后,可以通过调用S{j}来检索第j行操作的结果。

此外:

  • 使用i作为迭代器,因为它也代表虚构单位。
  • 不要硬编码值,而是参考现有值。例如,我在for循环声明中引用了n,而不是仅仅编写for j = 1:54,否则,如果我喜欢将我的代码用于53x100数组,它将不再起作用。
  • 当您发布代码时,我建议添加一个最小的工作示例 - 人们可以将其复制并粘贴到他们的Matlab(或任何语言的任何解释器)中的代码,并运行以重现您的问题。在这里,您没有包含任何告诉代码A的内容,例如。
  • This一般来说读起来不错,应该会在将来帮助你