![]() |
如何在不求助于循环的情况下有效地创建大型随机向量?
问题陈述:-我想创建一个包含随机实数(浮点数)的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.