For loop 如何在matlab中保存for循环运算的输出

For loop 如何在matlab中保存for循环运算的输出,for-loop,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 首先,根据你的问题判断,我推荐一些基本的Matlab教程,或者只是详细的文档 实际上是为了帮助你解决你的问题;您可以这样做: %% Make up A (since I

我有一个矩阵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

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

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

%% 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矩阵),而是一个向量,因此你得到了一个维度不匹配错误。上面我把
答案
s放入大小为n的单元格对象中。然后可以通过调用
S{j}
来检索第j行上的操作结果

此外:

  • 不要使用
    i
    作为迭代器,因为它也表示虚单位
  • 不要硬编码值,而是引用现有值。例如,在这里,我在For循环声明中引用了
    n
    ,而不是仅仅为j=1:54编写
    ,因为否则,如果我对53x100数组使用我的代码产生幻想,它将不再工作
  • 当您发布代码时,我建议添加一个最小的工作示例-一种代码,人们可以复制并粘贴到他们的Matlab(或任何语言的任何解释器)中,然后运行以重现您的问题。例如,这里没有包含任何告诉代码
    A
    是什么的内容
  • 总的来说,这是一本很好的读物,应该对你将来有所帮助
可能的副本