【发布时间】:2017-09-25 11:17:32
【问题描述】:
我有一个循环,它为每次迭代输出变量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); index out of bounds because size(x_norm)=[28,2].”。但是,x_A(:,1) 和 X_A(:,2) 中的输出是正确的,只是 x_A(:,3) 没有显示。
关于我应该在这里做什么的任何想法/建议/帮助?非常感谢!
【问题讨论】:
-
您确定 A 在每次循环迭代中的大小都相同吗?像
x_A = [x_A; [A]];这样的存储会大大降低代码速度,请使用预分配。 -
感谢@Gryphon 的回复。就像我说的,我在书中尝试了很多技巧。另外,对于您问题的第一部分;
A在每次迭代时肯定具有相同的大小。 -
在更新的代码中,每次循环迭代都会调整 x_A 数组的大小,因此在 kk = 3 时会出现错误,因为此时 x_A 为 28x2
-
哦,真的!,有什么建议可以解决这个问题吗?谢谢!
-
x_A(:,kk) = A;
标签: arrays matlab concatenation