问题陈述: - 我想创建包含随机实数(浮点数)的50个向量实例(1维)。数组大小(1维)将是3万。我如何继续进行,以便开销最小或复杂性最小?
答案 0 :(得分:4)
创建一个50x30k的随机值矩阵
values = rand(50, 30000)
然后每行将是一个30k值的随机向量
aVector = values(3,:) % Row 3, all columns
答案 1 :(得分:4)
N = 30000; %// length of your vectors
I = 50; %// number of instances
v = rand(I, N);
在上面的示例中,您将生成一个矩阵,其中每一行都是一个向量。生成均匀分布的随机数(对于高斯分布,使用randn
)。
如果您需要单独创建每个实例,请使用循环:
for i=1:I
v = rand(1, N);
%// do something with v
end
但是,如果我是你,我就不会使用它(它更慢,恕我直言不太清楚)。
修改强>:
关于你在Mau的答案下提出的问题:
不,您不需要自己编制索引。让Matlab为你做。
例如,如果您需要重复以下操作50次:
x1 = sigma*y + beta * vect1;
...
x50 = sigma*y + beta * vect50;
假设y
是大小为1x30000的向量,您可以在一行中计算它:
X = sigma*repmat(y, 50, 1) + beta * rand(50, 30000);
说明: 每一行都是您想要计算的单个矢量:
X(1,:) = x1;
...
X(50,:) = x50;
repmat(y,50,1)
在第一维(行)中重复您的y
向量50次