h****f 发帖数: 24 | | j****r 发帖数: 286 | 2 generate A, e.g.with all its rows uniformly distributed on sphere (see
Devroye)
return Z=AA^t
【在 h****f 的大作中提到】 : 请问如何随机产生一个正定或者半正定矩阵呢?
| h****f 发帖数: 24 | 3 这是别人写的一个方法,用matlab,你看是否可行呢?
V = orth(2*rand(n)-1); % Make random eigenvectors
D = diag(rand(n,1)); % Generate random positive eigenvalues
A = V*D*V'; % A will then be positive definite
另一个
M = randn(n, n);
A = M * M';
【在 j****r 的大作中提到】 : generate A, e.g.with all its rows uniformly distributed on sphere (see : Devroye) : return Z=AA^t
| i********e 发帖数: 31 | 4
要看你对分布本身有什么额外的要求.
这里你得到的特征值都是均匀分布在区间(0,1)上
(注意我将你上面的randn(n,n)改成了randn(n,p) 要求p>=n,
在p>=n时,A=M*M'得到正定矩阵的概率为1.)
这种方法得到的正定矩阵实际上是来自Wishart分布W_n(V,p)
这里n是矩阵大小,p是degrees of freedom (or shape parameter),
V是一个正定矩阵(scale parameter),你这里得到的V是n阶单位阵,
因为用的是1*randn. 你产生的样本平均值应该接近期望值p*V.
【在 h****f 的大作中提到】 : 这是别人写的一个方法,用matlab,你看是否可行呢? : V = orth(2*rand(n)-1); % Make random eigenvectors : D = diag(rand(n,1)); % Generate random positive eigenvalues : A = V*D*V'; % A will then be positive definite : 另一个 : M = randn(n, n); : A = M * M';
|
|