大家好,我有个问题:
我执行以下操作:
是以下矩阵的半正定?:
aM X= (1-a)P +
其中a是一个常数,如0.2。
在使用mvnrnd(均值,X)时,有时会出现以下错误: SIGMA必须是对称的半正定矩阵。
我的代码是:
%%%Dims are randomly choosen dimensions
%%%Inds are randomly choosen Indexes form {1, 2, ...,n}
%%% PP are n D dimensional vectors, composing my data set PP is n*D
%%% Sigmaa is a D*D covariance matrix
co = cov(PP(Inds,Dims));
me = mean(PP(Inds,Dims));
Bettaa = 0.2;
sigmaaDims = sigmaa(Dims,Dims);
sigmaaDims = (1-Bettaa)*sigmaaDims + (co)*Bettaa;
Tem = mvnrnd(me,sigmaaDims);
发布于 2015-05-02 15:49:23
简单地看一下矩阵的维数,就无法判断矩阵是否是半正定的。
要确定给定的矩阵是否为正半定,必须检查它的特征值是否是非负的,并且它是对称的:
symmetry = issymmetric(X);
[~,D]=eig(X);
eigenvalues = diag(D);
if all(eigenvalues>0) & symmetry
disp('Positive semi-definite matrix.')
else
disp('Non positive semi-definite matrix.')
end
其中X是您感兴趣的矩阵。
请注意,如果使用较弱的正定矩阵定义(不对称矩阵的扩展部分),X不需要是对称的,您将得到以下结果:
[~,D]=eig(X);
eigenvalues = diag(D);
if all(eigenvalues>=0)
disp('Positive semi-definite matrix.')
else
disp('Non positive semi-definite matrix.')
end
https://stackoverflow.com/questions/30003975
复制相似问题