为什么矩阵求逆就出现问题了
矩阵求逆后就有: Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 3.631628e-022
代码(求逆那我标明了):
load orl_faces%加载orl数据库faces
a=faces; %644*400
%取出所有训练图像y 是644*200
y=[];
for i=1:40
for j=1:5 %相当于 for(i=0;i<mm;i++)
y=;%a(:,(i-1)*10+j)是一个列向量 y=就是很多列向量组成一个矩阵x
end
end
%估计总体的协差阵ST
a2=y'; %转置
yy=mean(a2); %求均值,yy:1*644
xmean=[];
for i=1:5*40
xmean=;
end
xmean= xmean';
M= xmean* xmean';
M=(1/5*40)*M;% M为总体协差阵 M是ST
%求SB
x=[];
ymean=[];
for i=1:40
for j=1:5 %相当于 for(i=0;i<5;i++)
x=;%a(:,(i-1)*10+j)是一个列向量 x=就是很多列向量组成一个矩阵x
end
a1=x'; %转置
xx=mean(a1); %求均值,xx:1*644
ymean=;
end
ymean= ymean';
N= ymean* ymean';
N=(1/40)*N;%N是SB
S=M-N;%S是SW
a3=[];
f=inv(S);%算矩阵SW的逆矩阵
a3=f*N;%SW的逆乘以SB
=eig(a3);
l=orth(v);
Y=sort(l);
Z=[];
for i=1:39
Z=;
end
w=Z;
B=w'*x;%将644维的X投影到39维的Y上
%输入查询图像p
accu=0;
for m=1:40
for n=6:10
p=a(:,(m-1)*10+n);
%计算查询图象p的投影坐标
Q=w'*p;
% 计算出p与所有样本图象X间的欧几里得距离
distance=[];
fork=1:size(B,2)
e=Q-B(:,k);
temp=sqrt(sum(e.^2));
mag=temp;
distance=; %数组distance存放距离
end
=sort(distance);
%最近邻域判别法
class=ceil(index2(1)/5); % ceil向正取整,class:距离最近的类别
if class==m;
accu=accu+1; %记录识别成功次数
end
end
end
accuracy=(accu/200)*100
矩阵为奇异了,建议自己编程序求逆。
比如消去法。 哦,我也学学
啊? 不太会呢?能再帮我讲解详细点么?
原帖由 mondeo_2008 于 2007-5-18 21:45 发表 http://www.chinavib.com/forum/images/common/back.gif建议看看高等数学,或者线性代数的书籍,了解条件数、求逆、奇异等概念 谢谢了,你告诉我,我就知道查什么资料了 好象要求伪逆了 S矩阵不是方阵的话,需要求伪逆。
matlab中 pinv 就可以了。
有直接语句"/"
有直接语句"/"
页:
[1]