如何从循环中保存输出数组?

时间:2017-09-25 11:17:33

标签: arrays matlab concatenation

我有一个循环,它为每次迭代输出变量A作为mx1 matrix (where: m>1)。在整个循环结束时,A将以mxn matrix结尾。虽然输出作为mxn矩阵返回,但它会覆盖结果。我已经尝试了很多东西(包括那些适用于我以前的代码的东西),但似乎都没有用。不过,我觉得下面的代码应该可行,但我不确定错误的来源。

x_A = NaN(28, 3); % 28=length of A and 3=length of kk
Z = [1,2,4,7];

for kk = 1: numel(Z)
   [A,B,C] = fsave_output(Z, kk)
   x_A     = [x_A(:,kk) A(:,kk)];

   % repeat the line above for B and C

end

当我运行时,我收到错误消息:"尝试访问x_A(:,3);索引越界,因为size(x_norm)= [28,2]。" 。但是,x_A(:,1)和X_A(:,2)中的输出是正确的,只有x_A(:,3)没有显示。

关于我应该在这里做什么的任何想法/建议/帮助?非常感谢提前!。

1 个答案:

答案 0 :(得分:0)

如果您知道循环前要存储的矩阵的大小,请尝试

Z = [1,2,4,7];
store_A = zeros(numel(Z), m); %m is known length
store_B = zeros(numel(Z), m); %if not known, unroll first iteration of loop
store_С = zeros(numel(Z), m); %or store it in a cell and concatenate after the loop

for kk = 1: numel(Z)
   [store_A(kk,:),store_B(kk,:),store_C(kk,:)] = fsave_output(Z, kk)
end