我需要在Matlab中使用命令mvnrnd
生成三维矩阵B
。特别地,让
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
次采样。
您可以这样做:
- 在第1维重复
mu
,在第3维重复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