MATLAB中关于协方差矩阵特征值的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB中关于协方差矩阵特征值的问题相关的知识,希望对你有一定的参考价值。
我先用了cov函数求协方差矩阵,之后想用eig函数来求特征值,但MATLAB就报错了
??? Error using ==> eig
NaN or Inf prevents convergence.
的确我的协方差矩阵中有NaN和Inf的出现,请问我应该怎么处理呢?
我的是自协方差,是一幅图像的,例如图像是I(是280*2764),它的协方差矩阵是B=cov(I),(280*280)的,然后再用C=eig(B),就算不出来了,就出现以上结果,我后来看了矩阵B里的确很多NaN,Inf
cov(x,y)是一个2X2方阵 。
如果出现你所说的错误,说明不存在特征值,可能是不是协方差矩阵x和y不匹配吧吗?
matlab中使用快速pca提取特征
在matlab中使用快速pca降维我下载了一个程序,当中function [ pcaA,V] = fastPCA( A,k,mA)中的mA代表的是什么
m=size(A,1);
Z=(A-repmat(mA,m,1));
T=Z*Z';
[V,D]=eigs(T,k);%计算T的最大的k个特征值和特征向量
V=Z'*V; %协方差矩阵的特征向量
for i=1:k %特征向量单位化
l=norm(V(:,i));
V(:,i)=V(:,i)/l;
end
pcaA=Z*V; %线性变换,降至k维
end
程序中的Z=(A-repmat(mA,m,1));和T=Z*Z';又是干什么的,有没有谁能跟我说一下pca这个函数在matlab中是怎么使用的啊 我是初学者,在网上只能搜到pca的原理具体怎么用的没有将,谁能跟我说明一下
1、参数mA代表A的均值,也就是mean(A)。
其实这个参数完全没必要,因为可以从参数A计算得到。
2、解释一下你问的两个语句的含义:
Z=(A-repmat(mA,m,1)); 作用是去除直流成分
T=Z*Z'; 计算协方差矩阵的转置
3、关于函数的调用:
MATLAB统计工具箱中有函数princomp,也是进行主成分分析的(2012b之后有函数pca),基本调用格式:
[pc, score] = princomp(x)其中,输入参数x相当于你这个函数的A,输出参数score相当于你这里的pcaA,而pc大致相当于你这里的V(符号相反)。具体说明请参考函数的文档。
参考技术A mA应该是A的均值,可以通过mA = mean(A);求得,其实也不必写在输入里,在程序里有A就可以自己求出来了。Z = ...;这一句是将A去均值。在这里应该是A的每一列为一个特征,这样做是去掉每一个特征里面的均值成分,跟你做信号处理一般先去直流分量一样。
T = ..;这一句是求协方差矩阵;求出来之后用下面那句算特征向量。
k是你要取得主特征数量,用这个函数求出来有用的就是pcaA了,具体怎么用就要看你的应用了 参考技术B mA 是 A的均值.
Z=(A-repmat(mA,m,1));T=Z*Z';这两句是计算协方差
以上是关于MATLAB中关于协方差矩阵特征值的问题的主要内容,如果未能解决你的问题,请参考以下文章