MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何在不求助于循环的情况下有效地创建大型随机向量? (https://www.labfans.com/bbs/showthread.php?t=23642)

poster 2019-12-10 20:42

如何在不求助于循环的情况下有效地创建大型随机向量?
 
问题陈述:-我想创建一个包含随机实数(浮点数)的vector(1维)的50个实例。数组大小(一维)将为3万,我该如何进行操作以使开销最小或复杂度最小?



[B]回答:[/B]

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 但如果您是我,我不会使用它(速度较慢,恕我直言不太清楚)。

[B]编辑[/B] :
关于您在毛的答案下的问题:
不,您不需要自己编制索引。让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次



[url=https://stackoverflow.com/questions/3185996]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 23:33

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.