我必须生成20个随机矩阵,其大小不断增加
200:50:1150 //sizes of 20 random matrices
我想将它们存储为矩阵数组:
像
array(1) // should give me the 1st matrix of size 200x200
array(2) // should give me the 2nd matrix of size 250x250 and so on
我不知道该怎么做:
n = 200:50:1150
for i=1:20
M(:,:,i) = rand(n(i)); //This does not work
end
我该怎么做,没有循环有更快的方法吗?
答案 0 :(得分:1)
您不能将不同大小的矩阵堆叠到3d矩阵中,矩阵具有固定的尺寸。改为使用单元格数组:
n = 200:50:1150;
M=cell(1,numel(n));
for ix=1:numel(n);
M{ix} = rand(n(ix));
end
不使用for循环不会提高性能。在一次通话中简单地生成相同数量的随机数需要相同的时间:rand(sum(n.^2),1);