我需要使用命令B
在Matlab中生成三维矩阵mvnrnd
。特别是,让
mu=[0 0; -1 -3; 0 4; 2 4; 8 1]
和
sigma=repmat(1/(3^2)*eye(2),[1,1,5])
如果我使用命令
B= mvnrnd(mu,sigma)
我得到一个矩阵5x2
,其中每行i
都来自N(mu(i,:), sigma(:,:,i))
。
相反,我希望B
为5x2xr
,即每行i
从N(mu(i,:), sigma(:,:,i))
r
次采样。
答案 0 :(得分:1)
您可以执行以下操作:
mu
,沿第三维重复sigma
r
,并将其反馈给mvnrnd
。这样您就可以获得所需数量的样本,但r
矩阵沿第一维堆叠,而不是根据需要沿第三维堆叠。代码:
B = mvnrnd(repmat(mu, [r 1]), repmat(sigma, [1 1 r])); %// step 1
B = permute(reshape(B.', size(mu,2), size(mu,1), r), [2 1 3]); %'// step 2