在Matlab中生成随机矩阵

3
在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
@madbitloman 我猜是因为有5000个不同的值。 - Luis Mendo
从你的代码来看,我认为你想要一个1000x5000的矩阵,而不是5000x1000。对吗? - Luis Mendo
嗨,感谢您的答案。@madbitloman,是的,我需要这5000个值,因为我需要采样那么多的pdf文件。Luis,是的,你说得对。正如我所写的那样,它应该是1000x5000。 - Oliver Amundsen
1个回答

1
您可以重复AB(大小为1x5000的向量)以获得大小为1000x5000的矩阵,其中所有行都相等,并将这些矩阵用作betarnd的输入。这样,您就可以获得一个大小为1000x5000的结果,其中第k列包含具有参数A(k)B(k)的1000个随机值。
原因是根据文档(我强调):

R = betarnd(A,B)返回从具有参数AB的beta分布中选择的随机数字数组。如果两者都是数组,则R的大小是AB的公共大小。

所以,请使用:
MM = betarnd(repmat(A(:).',1000,1), repmat(B(:).',1000,1));

干得好,干净利落。谢谢Luis! - Oliver Amundsen
@OliverAmundsen 很好!我不确定那是否是你所需要的。 - Luis Mendo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接