【问题标题】:Generate Random Matrix in Matlab在 Matlab 中生成随机矩阵
【发布时间】:2015-04-10 19:45:53
【问题描述】:

Matlab 中有什么方法可以生成一个 5000 x 1000 的随机数矩阵,其中:

MM = betarnd(A,B,1,1000);

但是 A 和 B 是向量 (1 x 5000)。我收到以下错误消息:

??? Error using ==> betarnd at 29
Size information is inconsistent.

我想避免像下面这样的循环:

for ii = 1 : 1000
  MM(:,ii) = betarnd(A,B); 
end

谢谢!

【问题讨论】:

  • 是否有特殊需要使用 A 和 B 作为 1x5000 数组?
  • @madbitloman 我假设是因为有 5000 个不同的值
  • 从您的代码中,我认为您想要一个 1000x5000 的矩阵,而不是 5000x1000。对吗?
  • 您好,感谢您的回答。 @madbitloman,是的,我需要 5000 个值,因为我需要采样那么多 pdf。路易斯,是的,你是对的。正如我写的,它应该是 1000x5000。

标签: matlab random


【解决方案1】:

您可以重复 AB(大小为 1x5000 的向量)以获得大小为 1000x5000 的矩阵,其中所有行都相等,并将这些矩阵用作betarnd 的输入。这样,您将获得大小为 1000x5000 的结果,其中 k 列包含 1000 个随机值,参数为 A(k)B(k)

原因是,根据documentation(强调我的):

R = betarnd(A,B) 返回一个随机数数组,从 带有参数 AB 的 beta 分布。 R 的大小是AB 如果两者都是数组的共同大小

所以,使用

MM = betarnd(repmat(A(:).',1000,1), repmat(B(:).',1000,1));

【讨论】:

  • 漂亮干净。谢谢路易斯!
  • @OliverAmundsen 太棒了!我不确定这是否是您所需要的
猜你喜欢
  • 1970-01-01
  • 2020-04-20
  • 2016-02-15
  • 2014-10-22
  • 2013-02-08
  • 2012-04-10
  • 2013-08-24
  • 1970-01-01
  • 2016-06-30
相关资源
最近更新 更多