我正在运行一个for循环,它输出一个名为AFdata
的(100x2)数组。对于每次循环迭代,我想在AFdata
中保存AFmat
。但是我无法为列解算算法,因此每次迭代的每AFdata
个填充AFmat
中的正确位置。
这是我现在使用的代码:
for i = 1:Nsections
AFdata = Airfoil.getDatFile(Input.airfoilList{i},airfoilDir);
if isfield(Input,'TcRatios') && ~isempty(Input.TcRatios)
AFdata(:,2) = AFdata(:,2)*(Input.TcRatios(i)...
/Airfoil.calculateThickness(AFdata(:,2)));
end
end
例如:
第一次迭代给出了AFdata = [1 0; 2 0; 3 0]
第二次迭代给出AFdata = [4 9; 6 9; 8 9]
因此在2次迭代后,AFmat
应为[1 0 4 9; 2 0 6 9 ;3 0 8 9]
感谢!!!
答案 0 :(得分:2)
首先预先分配所需大小的AFmat
,然后在每次迭代时填入适当的列,例如
AFmat = zeros(100, 2*Nsections);
for i = 1:Nsections
% ... calc AFdata
AFmat(:,[2*i-1,2*i]) = AFdata;
end
答案 1 :(得分:0)
您可以使用cat()
功能。将AFmat
声明为空白矩阵(如果您不知道确切的维度),然后再连接。
AFmat=[];
for i = 1:Nsections
%calculate AFdata...............
AFmat=cat(2,AFmat,AFdata);
end
我听说过这会影响代码性能(不分配矩阵),但MATLAB并没有抱怨。我个人喜欢这个,因为cat()
函数中的维度对我来说很容易控制最终的矩阵属性。