问题陈述: - 我想创建50个矢量实例(1维),其中包含随机实数(浮点数).数组大小(1维)将说3万.我如何进行以便开销最小或复杂性最小?
N = 30000; %// length of your vectors
I = 50; %// number of instances
v = rand(I, N);
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,您将生成一个矩阵,其中每一行都是一个向量。生成的随机数具有均匀分布(对于高斯分布,使用randn
)。
如果您需要单独创建每个实例,请使用循环:
for i=1:I
v = rand(1, N);
%// do something with v
end
Run Code Online (Sandbox Code Playgroud)
但如果我是你,我就不会使用它(它更慢而且恕我直言不太清楚)。
编辑:
关于你在毛的回答下的问题:
不,你不需要自己索引它。让 Matlab 为您做这件事。
例如,如果您需要重复以下操作50次:
x1 = sigma*y + beta * vect1;
...
x50 = sigma*y + beta * vect50;
Run Code Online (Sandbox Code Playgroud)
假设y
是一个大小为 1x30000 的向量,您可以用一行计算它:
X = sigma*repmat(y, 50, 1) + beta * rand(50, 30000);
Run Code Online (Sandbox Code Playgroud)
解释:每一行都是您想要计算的单个向量:
X(1,:) = x1;
...
X(50,:) = x50;
Run Code Online (Sandbox Code Playgroud)
repmat(y,50,1)
y
在第一维(行)中重复向量 50 次