2016-03-14 158 views
0

我想生成一个矩阵(m行和n列),其条目是从零均值分布独立采样的,并且每行都被归一化为单位长度。我知道Matlab的函数randn(m,n),但我不确定“零均值”分布和规范化。有谁能够帮助我? 谢谢。生成一个随机矩阵

+1

我认为“零均值”意味着给定的分布具有零均值。这仍然允许连续的可能分布。而且是2范数的长度?你可能需要像'M = rand(m,n)-0.5; M = bsxfun(@ rdivide,男,SQRT(总和(M.^2,2)))'。这些元素在'[-0.5,0.5]'中最初是伪随机均匀的,然后这些行被归一化。 –

回答

1

如果我理解正确你的问题:

m=3; n=4; 
M = randn([m n]); 
M = bsxfun(@rdivide, M, sqrt(sum(M.*M,2))) %//divide each element by the magnitude of it's row 

randn()满足zero-mean distribution因为样本标准正态分布~N(0,1)

所谓“每一行归一化到单位长度”,林假设每个row vector in M需要是unit length,所以我们把由magnitude of its corresponding row vector每个element

+0

谢谢你,你的回答类似于上面的@Andras(第二步)。第一步是什么?他为什么要减去0.5,而你却没有? – lenhhoxung

+0

我从纸上得到的要求让我不太了解它。 – lenhhoxung

+0

@lenhhoxung我没有减去0.5,因为'randn()'的'distribution'的平均值已经为0,因此我相信根本没有必要改变它。 – Lincoln