匹配追踪算法,在信号恢复过程中,应用广泛,以为它的复杂度低,易于计算,但是存在过匹配现象,下面就是一个错误的例子
clear all;n=6;m=10; %A是高斯随机矩阵,已经单位化
A =[ -0.1620 0.4185 0.6517 0.5354 0.0348 -0.2154 0.3478 0.6858 0.4279 0.8338
0.1293 -0.1572 0.1680 -0.5021 -0.8107 -0.7932 -0.7811 -0.0173 -0.1831 0.1894
0.2538 -0.5570 0.6208 0.2858 -0.1994 -0.4202 -0.2375 0.5534 0.3501 -0.0043
0.7361 0.1272 -0.1131 -0.2706 0.1869 0.3601 -0.2594 -0.3139 0.4871 0.3297
-0.4730 0.6263 -0.3795 0.2480 -0.1298 -0.0386 -0.3751 0.0034 -0.0571 0.0202
-0.3564 0.2854 -0.0703 -0.4948 0.5001 0.1294 -0.0671 -0.3530 0.6483 -0.3997];
x=[1.3 0 -1.2 0 0 0 0 0 0 0]';
thrLSMP=1e-4;
r=b;
SS=[];
xOMP=zeros(m,1);
r'*r %迭代开始,第一次
Z=abs(A'*r);
posZ=find(Z==max(Z));
SS=sort([SS,posZ(1)]);
r=b-A(:,SS)*pinv(A(:,SS))*b;
xOMP(SS)=pinv(A(:,SS))*b;
r'*r %迭代,第二次
Z=abs(A'*r);
posZ=find(Z==max(Z));
SS=sort([SS,posZ(1)]);
r=b-A(:,SS)*pinv(A(:,SS))*b;
xOMP(SS)=pinv(A(:,SS))*b;
%得到错误的数据xOMP=[0.98295 0 0 0 0 0 0 -1.0412 0 0]' 和 x=[1.3 0 -1.2 0 0 0 0 0 0 0]';相差太大,谁知道原因呢???
如果x=[1.3 0 1.2 0 0 0 0 0 0 0],系数都是正数的话,MP算法能恢复正确的X,但是对于图像来说,它的灰度值虽然都是正的,但是经过DCT或者小波变换的话,
像素值就有正也有负,难道计算的时候,先把符号值提出来,再进行计算?