Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:42   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在不求助于循环的情况下有效地创建大型随机向量?

问题陈述:-我想创建一个包含随机实数(浮点数)的vector(1维)的50个实例。数组大小(一维)将为3万,我该如何进行操作以使开销最小或复杂度最小?



回答:

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

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



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



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


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