在MATLAB中,我有一个矩阵SIMC其具有尺寸22×4我重新生成该矩阵使用10倍for
环。
我想与基质落得U
包含SimC(1)
中的行1至22, SimC(2)
中的行23至45等。 因此ü应该具有在端部尺寸220×4。
谢谢!!
编辑:
nTrials = 10;
n = 22;
U = zeros(nTrials * n , 4) %Dimension of the final output matrix
for i = 1 : nTrials
SimC = SomeSimulation() %This generates an nx4 matrix
U = vertcat(SimC)
end
不幸的是,上述方法无效为U = vertcat(SimC)
只还给SimC
而不是串联。
vertcat
是一个不错的选择,但它会导致越来越多的矩阵。 这不是大项目好做法,因为它可以真正慢下来。 在你的问题,但是,你不通过太多次循环,所以vertcat
是罚款。
要使用vertcat
,你不会预先分配的全部最终大小U
矩阵...只是创建一个空U
。 然后,在调用的时候vertcat
,你需要给它,你想连接两个矩阵:
nTrials = 10;
n = 22;
U = [] %create an empty output matrix
for i = 1 : nTrials
SimC = SomeSimulation(); %This generates an nx4 matrix
U = vertcat(U,SimC); %concatenate the two matrices
end
更好的方式来做到这一点,因为你已经知道最后的大小,是预分配完整U
(像你一样),然后把你的价值观为U
通过计算正确的索引。 事情是这样的:
nTrials = 10;
n = 22;
U = U = zeros(nTrials * n , 4); %create a full output matrix
for i = 1 : nTrials
SimC = SomeSimulation(); %This generates an nx4 matrix
indices = (i-1)*n+[1:n]; %here are the rows where you want to put the latest output
U(indices,:)=SimC; %copies SimC into the correct rows of U
end