目录

  • 1. 算法描述
  • 2. 部分公式推导
  • 3. 算法代码
    • 3.1 OMP算法代码
    • 3.2 MP算法代码
  • 4. 例子

本文算法描述主要来自下面书籍的3.1节。
[1] 【以色列】Michael Elad著. 曹铁勇等翻.《稀疏与冗余表示–理论及其在信号与图像处理中的应用》.国防工业出版社. 2015.

1. 算法描述


(1) 任务:近似求解(P0P_0P0​)问题:min⁡x∣∣x∣∣0s.t.Ax=b\min_{\bf x}||{\bf x}||_0\ {\rm s.t.}{\bf Ax=b}minx​∣∣x∣∣0​ s.t.Ax=b。
(2) 参数:给定M×NM\times NM×N维矩阵A\bf AA,NNN维向量b\bf bb和误差阈值ϵ0\epsilon_0ϵ0​。
(3) 初始化:初始设置k=0k=0k=0,并设置:
  ① 初始解:x0=0{\bf x}^0={\bf 0}x0=0;
  ② 初始残差:r=b\bf r=br=b;
  ③ 初始解的支撑集:S0=support{x0}=Φ{\mathcal S}^0={\rm support}\{{\bf x}^0\}=\varPhiS0=support{x0}=Φ。
(4) 主要迭代:每次kkk加1,并执行下列步骤:
  ① 扫描:对所有的jjj,计算最优zj∗=ajTrk−1/∣∣aj∣∣22z^*_j={\bf a}_j^{\rm T}{\bf r}^{k-1}/||{\bf a_j}||_2^2zj∗​=ajT​rk−1/∣∣aj​∣∣22​,并得到误差ϵ(j)=min⁡zj∣∣ajzj∗−rk−1∣∣22\epsilon(j)=\min_{z_j}||{\bf a}_jz_j^*-{\bf r}^{k-1}||_2^2ϵ(j)=minzj​​∣∣aj​zj∗​−rk−1∣∣22​;【注1】
  ②更新支撑集:确定ϵ(j)\epsilon(j)ϵ(j)取最小值的点j0j_0j0​,∀j∈Sk−1\forall j\in {\mathcal S}^{k-1}∀j∈Sk−1,ϵ(j0)<ϵ(j)\epsilon (j_0)<\epsilon(j)ϵ(j0​)<ϵ(j),并更新支撑集Sk=Sk−1∪{j0}{\mathcal S}^k={\mathcal S}^{k-1}\cup\{j_0\}Sk=Sk−1∪{j0​};

%以上步骤对两种贪婪算法均相同,下面分不同算法描述
%OMP算法:

  ③ 更新临时解:在支撑集Sk=support{xk}{\mathcal S}^k={\rm support}\{{\bf x}^k\}Sk=support{xk}条件下,计算使得∣∣Ax−b∣∣22||{\bf Ax-b}||_2^2∣∣Ax−b∣∣22​最小化的值xk{\bf x}^kxk;【注2】
  ④ 更新残差:rk=b−Ax{\bf r}^k={\bf b-Ax}rk=b−Ax;【注3】

%MP算法:

  ③ 更新临时解:令xk=xk−1{\bf x}^k={\bf x}^{k-1}xk=xk−1,更新元素xk(j0)=xk(j0)+zj0∗{\bf x}^k(j_0)={\bf x}^k(j_0)+z^*_{j_0}xk(j0​)=xk(j0​)+zj0​∗​;【注4】
  ④ 更新残差:rk=b−Ax=rk−1−zj0∗aj0{\bf r}^k={\bf b-Ax}={\bf r}^{k-1}-z^*_{j_0}{\bf a}_{j_0}rk=b−Ax=rk−1−zj0​∗​aj0​​;【注5】

%下面的停止条件对两种算法均相同

   ⑤ 停止条件如果∣∣rk∣∣22≤ϵ0||{\bf r}^k||_2^2\le \epsilon_0∣∣rk∣∣22​≤ϵ0​,停止迭代;否则,继续迭代。

2. 部分公式推导

  本小节我们对算法中标注了【注?】的公式进行简单推导。

  • 【注1】
    这里的误差定义为
    ϵ(j)=min⁡zj∣∣ajzj−rk−1∣∣22,(1)\tag{1} \epsilon(j)=\min_{z_j}||{\bf a}_jz_j-{\bf r}^{k-1}||_2^2, ϵ(j)=zj​min​∣∣aj​zj​−rk−1∣∣22​,(1)也就是说,在第kkk次迭代,我们要在A\bf AA的NNN个列向量中,找到与残差rk−1{\bf r}^{k-1}rk−1最接近的列向量。
      进一步,我们可以推导得到,对于第jjj列,j=1,2,…,Nj=1,2,\ldots,Nj=1,2,…,N,都可以得到使得ϵ\epsilonϵ最小的zjz_jzj​为
    zj∗=<aj,rk−1>∣∣aj∣∣22,(2)\tag{2} z_j^*=\frac{<{\bf a}_j,{\bf r}^{k-1}>}{||{\bf a}_j||_2^2}, zj∗​=∣∣aj​∣∣22​<aj​,rk−1>​,(2)这里<a,b>=aTb<{\bf a},\bf{b}>={\bf a}^{\rm T}b<a,b>=aTb表示向量a\bf aa与b\bf bb的内积。将(2)代入(1),则对于每一列均有
    ϵ(j)=∣∣rk−1∣∣22−<a^j,rk−1>2,(3)\tag{3} \epsilon(j)=||{\bf r}^{k-1}||_2^2-<\hat{\bf a}_j,{\bf r}^{k-1}>^2, ϵ(j)=∣∣rk−1∣∣22​−<a^j​,rk−1>2,(3)其中a^j=aj∣∣aj∣∣2\hat{\bf a}_j=\frac{{\bf a}_j}{||{\bf a}_j||^2}a^j​=∣∣aj​∣∣2aj​​将A\bf AA中的列归一化。从(3)中不难看出,找到误差ϵ(j)\epsilon(j)ϵ(j)最小的列jjj,也就是找到与残差rk−1{\bf r}^{k-1}rk−1内积绝对值最大的列,记为j0j_0j0​,因此在"(4)-②更新支撑集"部分将新找到的j0j_0j0​加入支撑集中。

  • 【注2】OMP更新临时解
      在第kkk次迭代中,如果已经更新了支撑集Sk=Sk−1{\mathcal S}^k={\mathcal S}^{k-1}Sk=Sk−1,则可以把我们把A\bf AA中与支撑集对应的列提取出来,记作Ak{\bf A}^{k}Ak,显然Ak{\bf A}^{k}Ak的维度为M×∣Sk∣M\times |{\mathcal S}^k|M×∣Sk∣。
      下面我们需要通过最小化∣∣Akxk−b∣∣22∣∣{{\bf A}^k{\bf x}^k−{\bf b}}∣∣_2^2∣∣Akxk−b∣∣22​来求解xk{\bf x}^kxk。为了得到最小值,令其倒数等于零可以得到
    (Ak)TAkxk−(Ak)Tb=0.(4)\tag{4} ({\bf A}^{k})^{\rm T}{\bf A}^{k}{\bf x}^{k}-({\bf A}^{k})^{\rm T}{\bf b}=0. (Ak)TAkxk−(Ak)Tb=0.(4)因此,可以求出当前的解为
    xk=[(Ak)TAk]−1(Ak)Tb.(5)\tag{5} {\bf x}^{k}=[({\bf A}^{k})^{\rm T}{\bf A}^{k}]^{-1}({\bf A}^{k})^{\rm T}{\bf b}. xk=[(Ak)TAk]−1(Ak)Tb.(5)需要注意的是,这里是更新xk{\bf x}^kxk中的所有元素,而不是只是新加入的xj0x_{j_0}xj0​​,这是与MP以及弱MP不同之处。

  • 【注3】OMP更新残差
      在第kkk次迭代中,由于已经得到当前解xk{\bf x}^kxk,因此残差为
    rk=b−Akxk.(5)\tag{5} {\bf r}^k={\bf b}-{\bf A}^k{\bf x}^k. rk=b−Akxk.(5)注意由于在“更新临时解”的时候我们把xk{\bf x}^kxk中的所有元素都重新计算了,因此不能在rk−1{\bf r}^{k-1}rk−1基础上计算rk{\bf r}^krk,这也是与MP以及弱MP不同之处。
      从(4)中,我们可以得到
    (Ak)T(Akxk−b)=0.(6)\tag{6} ({\bf A}^{k})^{\rm T}({\bf A}^{k}{\bf x}^{k}-{\bf b})={\bf 0}. (Ak)T(Akxk−b)=0.(6)由(5)可以进一步得到
    −(Ak)Trk=0.(6)\tag{6} -({\bf A}^{k})^{\rm T}{\bf r}^k={\bf 0}. −(Ak)Trk=0.(6)这意味着,第kkk次迭代结束之后,Ak{\bf A}^kAk中的所有列都与当前残差rk{\bf r}^krk正交,即内积为零,因此这些列不会被重新选择进入支撑集。

  • 【注4】MP更新临时解
      MP与OMP在更新临时解时不同之处在于,OMP会对xk{\bf x}^kxk中所有∣Sk∣|{\mathcal S}^k|∣Sk∣个元素进行重新计算,而MP则会保持xk−1{\bf x}^{k-1}xk−1中原来的解不变,只令xk(j0)=xk(j0)+zj0∗{\bf x}^k(j_0)={\bf x}^k(j_0)+z^*_{j_0}xk(j0​)=xk(j0​)+zj0​∗​。因此这里的j0j_0j0​有可能是前边已经找到的,这里对其进行修正。

  • 【注5】MP更新残差
      第kkk次迭代时,由于MP算法保留前面的xk−1{\bf x}^{k-1}xk−1中原来的解不变,只是令xk(j0)=xk(j0)+zj0∗{\bf x}^k(j_0)={\bf x}^k(j_0)+z^*_{j_0}xk(j0​)=xk(j0​)+zj0​∗​,因此rk{\bf r}^krk与rk−1{\bf r}^{k-1}rk−1之间有如下关系:rk=rk−1−zj0∗aj0{\bf r}^k={\bf r}^{k-1}-z^*_{j_0}{\bf a}_{j_0}rk=rk−1−zj0​∗​aj0​​。

3. 算法代码

3.1 OMP算法代码

function x=OMP(A,b,epsilon_0)
%c初始化
N=size(A,2);
%初始解
x=zeros(N,1);
%初始残差
r=b;
%初始化迭代计数器
k=1;
%将A中的每一列归一化
for cnt=1:NA_norm(:,cnt)=A(:,cnt)/norm(A(:,cnt));
end%迭代
while (error>=epsilon_0)  %⑤ 停止条件% ①扫描g=A_norm'*r;%A中所有列归一化之后与残差求内积% ②更新支撑集pos=find(abs(g)==max(abs(g)));%找到内积最大值的位置,也就是这一步要找的字典中的原子position(k)=pos;%S^k=support(x^k)% ③更新临时解Ak=A(:,position);xk=inv(Ak'*Ak)*Ak'*b;% ④更新残差r=b-Ak*xk;error=norm(b-Ak*xk);k=k+1;
end
x(position)=xk;

3.2 MP算法代码

function x=MP(A,b,epsilon_0)
%c初始化
N=size(A,2);
%初始解
x=zeros(N,1);
%初始残差
r=b;
error=norm(b);
%设置迭代次数
k=1;
%将A中的每一列归一化
for cnt=1:NA_norm(:,cnt)=A(:,cnt)/norm(A(:,cnt));
end%迭代
while (error>=epsilon_0 )%① 扫描g=A_norm'*r;%A中所有列归一化之后与残差求内积%② 更新支撑集pos=find(abs(g)==max(abs(g)));%找到内积最大值的位置,也就是这一步要找的字典中的原子position(k)=pos;%S^k=support(x^k)%③ 更新临时解z=(A(:,pos)'*r)/norm(A(:,pos))^2;x(pos)=x(pos)+z;%④ 更新残差r=r-z*A(:,pos);error=norm(r);k=k+1;
end

4. 例子

   我们用一个例子来看看输出结果。参数以及结果如下:
A\bf AA中元素如下:

>> A(:,1:16)
ans =-0.2239   -0.0140    0.0870   -0.0287   -0.1156   -0.3597    0.1340   -0.1623   -0.1622   -0.0546    0.1289   -0.4163   -0.0613    0.3897   -0.0300   -0.10720.0817    0.1445    0.0108    0.3430   -0.0633    0.0710    0.0348    0.0564    0.2455   -0.2208   -0.0258   -0.0759    0.0725    0.1483    0.0563    0.1226-0.2678   -0.2989    0.0360   -0.0572    0.1135   -0.1340   -0.0866   -0.0132    0.0628    0.1133   -0.2249    0.2416    0.3425   -0.0408   -0.3405    0.0978-0.0948    0.0056   -0.0533   -0.1205   -0.0732   -0.2216   -0.1257   -0.1090   -0.3316   -0.1877   -0.2531    0.0768    0.1743   -0.3302   -0.2244    0.2190-0.0300    0.0115    0.1071    0.0917    0.1001    0.0212    0.0273    0.0136    0.0554   -0.1335   -0.1501    0.1220   -0.1255    0.0417    0.0924    0.0722-0.1617    0.0606   -0.4059    0.0396    0.0491   -0.0967   -0.0159    0.1022   -0.2947    0.2214   -0.2118   -0.0143   -0.2740    0.0437    0.0691   -0.0290-0.1531   -0.1466    0.0276    0.0779    0.0277    0.0105   -0.1392    0.2276    0.1371    0.1281   -0.1203   -0.0586    0.1620   -0.1325   -0.2282   -0.2265-0.0555   -0.2337    0.1744   -0.3525    0.1406    0.1575   -0.1222   -0.1780    0.2404   -0.1176   -0.1975    0.1072   -0.1896    0.1689    0.2212    0.0626-0.1350   -0.4372   -0.0317   -0.0253    0.3085   -0.1917    0.0829   -0.1139   -0.0317    0.1582    0.2581    0.3570   -0.1367    0.0654   -0.0131   -0.0610-0.3290    0.0903    0.0962   -0.3087    0.2115   -0.0313    0.0802   -0.1435   -0.1574   -0.1026    0.0561   -0.0414    0.0889    0.0982    0.0278    0.04410.1805    0.1786   -0.0991    0.0312   -0.2284   -0.3484   -0.0479    0.1689    0.2126    0.0165    0.0589    0.2214   -0.2909   -0.0814    0.0215    0.1740-0.2254   -0.0736    0.0287    0.1288    0.0764   -0.0785    0.1271    0.3132   -0.0885    0.2854   -0.1744   -0.0831    0.2974   -0.1144   -0.1081   -0.09810.2537    0.3943   -0.0972    0.1986   -0.1797    0.2026   -0.0538    0.2102   -0.1418    0.3512    0.0575   -0.0663    0.0196   -0.0782   -0.3599   -0.0960-0.0842   -0.1062    0.1905    0.1268   -0.2899   -0.3577   -0.0178    0.2671   -0.2187   -0.0690    0.0671    0.1003   -0.0447   -0.1859   -0.0257   -0.0516-0.0755   -0.2173    0.0782    0.0815   -0.1745    0.0801    0.1899    0.0496   -0.2543   -0.0047   -0.1945   -0.1390    0.1544   -0.0874   -0.3076    0.04230.3176   -0.0241    0.2290    0.1305   -0.3145   -0.2770   -0.0830   -0.1597    0.0478    0.1617   -0.2471    0.1452    0.1541    0.1216   -0.0324    0.40530.0640    0.0175   -0.0069   -0.0095   -0.1631    0.0449   -0.3142    0.1354   -0.0575    0.0945   -0.4021   -0.2594   -0.0476   -0.3774    0.0408   -0.1737-0.0986    0.1131   -0.0099   -0.0065    0.1952   -0.0923   -0.1982    0.3438    0.1366   -0.0363    0.1814   -0.3730    0.2106   -0.2965    0.0389    0.2666-0.2027    0.0201    0.0521    0.1718   -0.0687   -0.0571    0.0447    0.1008   -0.0098   -0.0326   -0.2104   -0.0245    0.0702    0.0044   -0.2725   -0.0429-0.1268   -0.1265    0.2410    0.1830    0.3864   -0.3286   -0.0332    0.1851   -0.0363   -0.1220    0.0097    0.0507    0.2102    0.0550    0.0721    0.17860.0980   -0.2524   -0.3977   -0.0793    0.0563   -0.1867    0.4231   -0.3074   -0.2983   -0.3535    0.0173    0.1965    0.0503   -0.1588   -0.2379    0.01190.2076   -0.0972   -0.2790   -0.3026    0.1447   -0.0395   -0.2176    0.1137   -0.1344   -0.0244    0.0190    0.0184   -0.0365    0.0898    0.0495   -0.10630.0118   -0.2260    0.2108   -0.3864   -0.0210    0.0147   -0.0375   -0.0307    0.0181   -0.1864   -0.1326    0.1471    0.3342    0.2107    0.1186   -0.0516-0.1208    0.1199    0.3151   -0.2731   -0.0403   -0.0392    0.0062    0.1102   -0.0742   -0.0355   -0.0470    0.0371   -0.1497    0.1144    0.3142    0.19080.0822   -0.0172   -0.0341   -0.1684   -0.1129   -0.1314   -0.2113    0.2543    0.2210    0.3841   -0.0638    0.1047    0.1210   -0.2616   -0.4031    0.25200.1645   -0.3071    0.2253    0.0753    0.0232    0.2722    0.1660   -0.1273   -0.3174    0.0053    0.2805   -0.1493    0.3864   -0.1223    0.1630    0.1912-0.1034    0.0606    0.3611   -0.1306   -0.2138   -0.0398    0.1144    0.2999   -0.0314    0.2349   -0.2403   -0.0118   -0.0790   -0.1429   -0.0319   -0.11220.3537   -0.1529    0.0316   -0.0144   -0.1225   -0.1590    0.2373   -0.1879    0.0199   -0.1728   -0.0428   -0.0921    0.1213   -0.0567   -0.0148   -0.2564-0.0893    0.2238   -0.0758    0.0622   -0.1541   -0.1554    0.1057    0.0081   -0.1252    0.1985    0.2216   -0.0365    0.0611   -0.1123   -0.1105    0.07980.2202    0.0087   -0.0794   -0.2334    0.0243   -0.0155   -0.5460    0.0611    0.0194   -0.2604    0.0875    0.3539   -0.0665   -0.1408    0.0460    0.10500.2374    0.0380   -0.0426   -0.1431    0.2185    0.1903   -0.1487    0.2125    0.2879   -0.0436   -0.2262   -0.2163   -0.0007    0.3196   -0.0508   -0.49990.0139   -0.1305    0.1329   -0.1261    0.3110   -0.0870    0.0480   -0.0644   -0.1820    0.0452    0.1648    0.0053    0.1180   -0.0557   -0.1216    0.0048>> A(:,17:32)
ans =0.3442    0.0099    0.0860    0.0330   -0.0069    0.0579   -0.2881   -0.1151   -0.2097   -0.0259    0.0857    0.0371   -0.1455    0.0129   -0.1777    0.0841-0.0310   -0.2065   -0.0539    0.0327   -0.0569    0.0443   -0.1425    0.2066   -0.4318    0.0504    0.1835    0.0414    0.0775   -0.0880   -0.0337    0.1693-0.1058   -0.1465   -0.0889   -0.1492    0.0145    0.1947   -0.0869    0.1783    0.3457   -0.3774   -0.1571    0.3327    0.0730    0.1214   -0.2366    0.0740-0.1656   -0.1347   -0.1262    0.2517   -0.0664   -0.0623   -0.2651   -0.0279   -0.1184   -0.1088    0.0611    0.2314   -0.3099   -0.3421    0.0978   -0.2097-0.2975    0.1851    0.1177   -0.1696   -0.2170   -0.0965    0.0895    0.5234    0.1362   -0.1738   -0.3021    0.3498    0.0559    0.0085    0.1986   -0.1413-0.0804   -0.0806   -0.0161   -0.0744    0.1025    0.1002    0.0485   -0.0575    0.0028   -0.1042    0.1273    0.0414    0.3279    0.1917    0.1845   -0.15530.0495    0.0154   -0.2301   -0.1436    0.2993   -0.0577   -0.0995    0.1548   -0.1611   -0.1242   -0.2051    0.1705   -0.2258   -0.0463   -0.1655   -0.1209-0.1616   -0.2238    0.3217   -0.1929    0.0384    0.1680   -0.2210   -0.0099   -0.0065   -0.0688    0.1474   -0.1109   -0.1201    0.1172   -0.1144    0.07270.0416   -0.0307   -0.0506    0.0118   -0.1547   -0.2757   -0.0437   -0.2715    0.0656   -0.0801    0.0792   -0.0433   -0.1917    0.0350   -0.0165    0.06970.1294   -0.2729    0.0402   -0.3000    0.0117    0.2498   -0.0266    0.2959   -0.1852    0.1072   -0.0752   -0.3280    0.2128    0.1189   -0.0638   -0.0466-0.0975   -0.1179    0.0526   -0.0672    0.2121   -0.1376   -0.3449   -0.1674    0.1942    0.2340   -0.2704    0.0131   -0.1049   -0.1003   -0.0851   -0.20450.0809    0.1275   -0.1936    0.1787    0.3706    0.0449    0.2075    0.0116    0.1940   -0.2502    0.2433    0.1740    0.1416    0.3396   -0.4074   -0.06670.0929    0.2870    0.1810    0.1751   -0.2921   -0.0881    0.0691    0.3023   -0.0158    0.2857    0.0279   -0.1986   -0.3101    0.0806    0.1027    0.1222-0.0070    0.0815    0.0372   -0.4188    0.0237    0.1344   -0.2783    0.1012    0.0996    0.2091    0.3065   -0.0418   -0.3436    0.0287   -0.0378   -0.02650.3214    0.0163    0.0213    0.0875   -0.0901   -0.2670    0.3140    0.0584   -0.1975    0.0153    0.0016   -0.1359    0.1880   -0.2420    0.1119    0.2948-0.2090    0.1802    0.2002   -0.0986    0.1132   -0.2010   -0.0244   -0.0229    0.0927    0.2575   -0.3250   -0.1517    0.1118   -0.0393    0.0427   -0.16750.0452    0.1222    0.0236    0.0970    0.0351    0.3074   -0.2338    0.0386   -0.0208    0.0399    0.3088    0.1693    0.0528   -0.2938   -0.4807    0.0602-0.1522   -0.4111   -0.2553    0.0370   -0.1224   -0.1837   -0.1470    0.2975    0.2607   -0.1663   -0.0532    0.0126    0.1823   -0.0586   -0.0486    0.2357-0.1186   -0.3007   -0.0024   -0.0680   -0.3756   -0.1315    0.0417   -0.0726   -0.1551    0.1838    0.1689    0.1388    0.0127   -0.2498    0.1269   -0.17610.0724   -0.1399    0.1730   -0.0029   -0.2524    0.0117   -0.2285   -0.0349    0.3260    0.3638   -0.1320    0.0745    0.0264   -0.0130    0.1687   -0.01150.1795   -0.1467    0.1797    0.1308   -0.1260   -0.1504   -0.0752   -0.0717    0.0033   -0.1262    0.1118    0.1756   -0.1649    0.0309   -0.0512   -0.24870.0279   -0.2686    0.0392    0.1562   -0.0569    0.0276   -0.0161   -0.0649    0.0722   -0.1632    0.1526   -0.4236    0.0018   -0.0985    0.0840   -0.19060.2144   -0.1139   -0.2510   -0.1613    0.2444    0.2215   -0.0674   -0.0271    0.2350    0.1855    0.1851   -0.1918   -0.2074    0.3318    0.0384   -0.2963-0.1528   -0.1563    0.1625   -0.2857   -0.1236    0.0129    0.0323    0.0974    0.1788   -0.0039    0.0912   -0.0323   -0.1679    0.2782    0.1488   -0.19130.0556    0.1847   -0.0085   -0.0902    0.0773    0.3251   -0.1130    0.0139   -0.1420   -0.2223   -0.0075    0.0653   -0.0900    0.2873    0.3169    0.0753-0.0872   -0.1024    0.0284    0.2195    0.1883   -0.2730   -0.0398   -0.1197   -0.1483    0.2015    0.0264    0.2155    0.0262    0.1201   -0.1471   -0.0492-0.1244   -0.2142    0.1899    0.0738    0.0482   -0.0536    0.0303    0.2600   -0.1483   -0.0251    0.0552   -0.1200    0.3021    0.1585    0.3389    0.1193-0.4323   -0.0699    0.0597    0.0848    0.0176   -0.1646   -0.3524   -0.1369    0.1742   -0.1296   -0.1349   -0.1135    0.0712   -0.1336    0.0346    0.21040.1249   -0.1150   -0.5517   -0.0952   -0.1269    0.0694   -0.3044   -0.0520   -0.0220   -0.0948    0.1006   -0.0535    0.0766    0.0268   -0.1289    0.07420.3080    0.0440   -0.2466   -0.1648    0.1749   -0.2376   -0.1694    0.0126   -0.0721   -0.0811   -0.1945    0.1305    0.1024   -0.2281   -0.1308    0.15870.0821   -0.0388   -0.1227    0.4470    0.3385   -0.3314    0.0127   -0.2648    0.0134    0.1528   -0.3482    0.0200    0.2269    0.0487    0.0190    0.15450.2261   -0.2494   -0.1914   -0.0226    0.0988   -0.0741    0.0322   -0.1588    0.1679   -0.1884    0.0304    0.2113    0.1094    0.2321    0.0223    0.4825>> A(:,33:48)
ans =0.1376   -0.1319   -0.2116   -0.1835   -0.0800   -0.0257   -0.0007    0.1015   -0.0293    0.4191    0.1993    0.1148   -0.1860   -0.1733    0.0021   -0.0515-0.2711   -0.0526    0.1087    0.1825    0.1064    0.1838    0.0254    0.2153    0.0081    0.1697    0.0551    0.2111    0.0830    0.1548    0.0083   -0.09630.0537    0.1947    0.0294    0.1347   -0.1540   -0.2081    0.2857   -0.0093    0.3018   -0.1211    0.3803   -0.0405   -0.2477    0.0012   -0.0859    0.02960.1213   -0.0008    0.0573    0.1072   -0.1160    0.3852    0.0919    0.3298    0.0654   -0.0712   -0.0462   -0.1005    0.1821    0.0704    0.3319    0.10980.1713    0.0699   -0.1792   -0.1988    0.0472    0.2118    0.0499   -0.0174   -0.1159    0.0994    0.1101    0.3489   -0.0472   -0.1044   -0.0778   -0.05860.1485    0.2634   -0.0686   -0.0342   -0.1037   -0.0387    0.1056   -0.1821    0.1468    0.1358   -0.0033   -0.0167    0.1590   -0.0234    0.1179    0.0037-0.0894    0.1137   -0.2690   -0.0900   -0.2267    0.0451   -0.0183   -0.0030    0.1547    0.2226    0.0746    0.0737   -0.2193    0.1574    0.2046   -0.33910.0050    0.0215   -0.1278   -0.1838   -0.1022   -0.1367   -0.1833   -0.3140    0.0244    0.0648   -0.2743   -0.0674    0.1726   -0.2422   -0.0574   -0.22900.0627    0.1804   -0.1689   -0.0852   -0.1255   -0.1458    0.0683    0.2301    0.3959   -0.1933    0.0431    0.0982   -0.0610   -0.1427    0.2447   -0.07670.0392    0.3705   -0.0609   -0.3105    0.1275    0.0119   -0.3012   -0.2167   -0.0294    0.0177    0.1317   -0.2366   -0.0160    0.1920    0.0750   -0.03500.3686   -0.0859    0.0295   -0.0301    0.0410    0.1544   -0.1289    0.0515   -0.0810   -0.2927   -0.0010    0.0042   -0.0600    0.3187   -0.2513   -0.2193-0.2915    0.1409    0.1477   -0.0378    0.1007    0.1450    0.1964    0.1673    0.0964    0.1098   -0.0621   -0.1715    0.1482   -0.1624   -0.0796   -0.24260.1555   -0.1352   -0.1862   -0.1592   -0.0848    0.3339   -0.1290    0.0883   -0.2299    0.1090    0.0045   -0.0371    0.3980    0.0826   -0.0245    0.12600.2155   -0.2074    0.0511    0.1221    0.3906   -0.0510    0.0502    0.0683   -0.0727    0.0279   -0.3605    0.1335    0.1978   -0.2345    0.1077    0.0277-0.1073   -0.1125    0.1893   -0.2008    0.0201   -0.0349   -0.0400   -0.1582   -0.0954   -0.1764    0.2143    0.3793    0.0065    0.1237    0.1204    0.28300.0900   -0.0122    0.1675   -0.0475   -0.1697   -0.4283    0.0515   -0.0101    0.2413    0.2426    0.0590   -0.0875   -0.1650    0.0250    0.1177    0.1122-0.0162   -0.3259   -0.2777    0.1005   -0.2442   -0.0483    0.0787    0.1702    0.1248    0.1882    0.0950    0.1032    0.0186   -0.1907   -0.2444   -0.2395-0.1878   -0.2656    0.1275    0.0408    0.0182    0.0229   -0.0930   -0.1397    0.1073   -0.1356    0.1130   -0.0885   -0.2202    0.0957   -0.2577   -0.45590.0183   -0.0095   -0.0294   -0.4591   -0.0750    0.0059   -0.3945   -0.2261    0.1624   -0.2542    0.0495    0.0173   -0.0193    0.2379    0.2273    0.02860.3031    0.0998    0.2406   -0.1479   -0.2495   -0.1014    0.1896   -0.1278    0.1588    0.1913    0.2448    0.5387    0.2080   -0.0296    0.1391   -0.0467-0.0725    0.1305    0.1619   -0.0778   -0.0867   -0.2017   -0.1036    0.1563    0.0058    0.1159   -0.1931    0.0351   -0.0193   -0.1690    0.0696    0.11400.1140    0.0727   -0.0608   -0.1060   -0.3004   -0.0644    0.0529   -0.0502   -0.2500    0.0068   -0.0129   -0.1156    0.2633   -0.2103    0.2612    0.1878-0.2037   -0.0299    0.0469   -0.2591    0.1259    0.3447    0.1800    0.0408   -0.2968    0.0486    0.1871    0.1940   -0.1100   -0.2336    0.3120   -0.0411-0.1674    0.0881    0.0890   -0.0083    0.3587   -0.1455   -0.2010   -0.3192    0.0067    0.1328   -0.0025    0.1790    0.0966    0.0749   -0.1304    0.0306-0.2251    0.4141   -0.4287   -0.0321    0.1366    0.0004    0.2332   -0.1414    0.2937   -0.0821    0.1109   -0.2946    0.0729    0.0638    0.0071   -0.1482-0.2607    0.3284   -0.1070    0.2451   -0.0596   -0.1813    0.1376   -0.1280    0.1467    0.2960   -0.2795   -0.1239   -0.3091   -0.1474    0.0728    0.2469-0.1712   -0.0099   -0.0689    0.0215    0.2509    0.1824    0.0227   -0.2316    0.1850    0.0660    0.0602   -0.0867   -0.1152    0.1418    0.0203    0.0107-0.1634    0.2350   -0.1994    0.1351    0.0537    0.1232   -0.0666    0.2148    0.3167   -0.1460    0.1870   -0.0491    0.2219   -0.2004    0.0343   -0.1094-0.0803   -0.1031   -0.3889   -0.0250   -0.4095    0.0251    0.2238    0.1903   -0.0856   -0.0940   -0.3866    0.0203   -0.2512    0.2798    0.0328   -0.0940-0.2986    0.0583    0.1463   -0.3496   -0.0267   -0.0074    0.0828   -0.2867   -0.1119    0.2866   -0.0407   -0.1085   -0.0338   -0.4002    0.1835    0.3737-0.0921    0.0240   -0.1069   -0.2822    0.0145    0.2316    0.0988    0.0457    0.1945   -0.1238   -0.2163    0.0839   -0.2151   -0.0515   -0.4643    0.1044-0.1408    0.1268    0.2042   -0.1439    0.1037    0.0905    0.5000   -0.1767   -0.1266   -0.2020   -0.1778    0.0911   -0.2162    0.1417   -0.0010    0.0864>> A(:,49:64)
ans =0.0621   -0.5416   -0.0953   -0.0151    0.0291    0.2199    0.3545    0.0769    0.1755    0.2045    0.0253   -0.0268    0.3614    0.0616   -0.0102    0.21260.0837   -0.1624    0.3650    0.2884    0.0539   -0.0467   -0.0672   -0.0660    0.1471    0.2528    0.1565   -0.1969   -0.0263    0.4274    0.2664    0.16400.0870   -0.2560    0.2014    0.0324   -0.3739    0.0492    0.2616   -0.0753   -0.1703    0.1979   -0.2130    0.0511   -0.0650   -0.2993   -0.0853   -0.04240.0012   -0.0375    0.1509   -0.0705    0.2859    0.2045   -0.1614   -0.1852    0.0294    0.2799   -0.0409    0.2305    0.2685   -0.2943   -0.0345    0.01830.3152    0.1889   -0.3664    0.0184   -0.1191    0.1186   -0.0579    0.1836   -0.0857    0.0662    0.2452   -0.4660   -0.1516   -0.0479    0.1182    0.0164-0.0441    0.0908   -0.2237   -0.1078    0.0746    0.0637   -0.1710   -0.1417    0.1610   -0.2980    0.3305    0.0244   -0.0609   -0.1481    0.0341    0.0397-0.1553   -0.0780   -0.1241    0.1203   -0.0384    0.2877    0.0821   -0.3071   -0.1497   -0.1521    0.0004    0.0302   -0.0053   -0.1769    0.0791    0.1717-0.0760   -0.2861   -0.0579    0.2724    0.0656   -0.1844    0.0531   -0.1304    0.3027   -0.0285    0.2966    0.0749    0.0981    0.1623   -0.0647   -0.08020.2179   -0.0938   -0.2318    0.1820   -0.0165   -0.0937   -0.0950    0.2288   -0.3017   -0.2680   -0.0316   -0.0810   -0.1760   -0.0727   -0.0303    0.35350.1439   -0.2086    0.1158    0.0434    0.0250    0.0597   -0.2052    0.0399    0.0566   -0.0968   -0.1744    0.0724   -0.1564    0.0798    0.2771   -0.25470.2159    0.0756   -0.0924   -0.2381   -0.2032   -0.0720   -0.3934   -0.0578   -0.2944    0.2353   -0.0207   -0.1186    0.0492    0.0346    0.3457   -0.0716-0.0394   -0.1030   -0.0292   -0.1114    0.0253   -0.1137   -0.1391    0.0322   -0.1412   -0.1441   -0.3478    0.0546   -0.0306   -0.2726   -0.0059   -0.17820.0278    0.2492   -0.0970    0.0705   -0.2842    0.1453   -0.2092    0.0613   -0.2093    0.0375   -0.1649    0.2457   -0.2709    0.1304   -0.1324   -0.1481-0.3342   -0.0206   -0.0156   -0.0134   -0.0207   -0.1024    0.0964    0.0691    0.3014    0.0519   -0.1240   -0.0194   -0.2786   -0.0436   -0.0155   -0.36750.1742   -0.2672    0.2426    0.2419    0.0349    0.0797    0.1571   -0.0284   -0.0316    0.3406    0.2751   -0.2309   -0.2800   -0.1128   -0.0988    0.2593-0.0198    0.0139   -0.3236    0.1156   -0.0532   -0.0370   -0.2920    0.3603    0.0634   -0.0465    0.0444   -0.0221    0.0032   -0.0261   -0.1229    0.01700.0103    0.1262   -0.1700   -0.2509    0.0622   -0.0879   -0.2549    0.1669   -0.2806    0.1191    0.4080    0.0929    0.0732    0.0670   -0.3377   -0.02820.1867   -0.0872   -0.0832    0.1108    0.1690    0.0922   -0.0699   -0.3906   -0.1868   -0.2273    0.0888   -0.0578    0.1078    0.1882   -0.2651    0.0214-0.0503    0.1087    0.0981    0.1170   -0.3044    0.0587    0.1382   -0.1500    0.0676   -0.1619    0.0706    0.3555   -0.1717    0.0174   -0.0050   -0.15810.0794    0.0597   -0.1809    0.3064   -0.2779   -0.3981    0.1828   -0.0051   -0.0201    0.0603   -0.0447   -0.0944   -0.3250   -0.2937   -0.1107   -0.0823-0.1322    0.0676   -0.0928    0.0149   -0.1183   -0.0684    0.2145    0.0784    0.1285    0.0968   -0.1780   -0.0910    0.0957    0.1421    0.2262    0.1996-0.0980   -0.0574    0.1244    0.0460    0.0818   -0.2176   -0.0578   -0.0449    0.2251   -0.0872    0.0338    0.3487   -0.0136   -0.0931   -0.3166   -0.01480.0998   -0.0225   -0.2171   -0.2757    0.0660    0.0226   -0.0959   -0.0072   -0.1789    0.0507   -0.0751    0.0639   -0.0029    0.3142   -0.1588    0.1137-0.0390   -0.0236    0.1852   -0.0806   -0.0678   -0.1447   -0.1508   -0.0512   -0.1888   -0.1242   -0.3108    0.1145   -0.0656    0.1039    0.0860    0.1458-0.2884   -0.0226    0.0605   -0.2614    0.1108   -0.0029    0.0804   -0.2076    0.0887    0.1060    0.1028    0.2854   -0.0504    0.1114    0.0802    0.2287-0.0991   -0.2561    0.1007   -0.0259    0.3969    0.2529    0.1115    0.3359   -0.0235   -0.1296   -0.0329   -0.1402    0.3074   -0.0581   -0.0753   -0.11900.5359   -0.0032   -0.0026   -0.1364   -0.2060    0.3433   -0.2232   -0.0309    0.0025    0.0464    0.0523   -0.0397   -0.0249   -0.1436   -0.1716   -0.16580.0908   -0.2094   -0.1763   -0.2254   -0.1616    0.1611   -0.0204    0.3666   -0.1723    0.0650   -0.1039    0.1860    0.0826   -0.1243   -0.4056    0.08440.0396    0.0225   -0.2827   -0.0008   -0.3494   -0.3224   -0.0775   -0.1404   -0.1846    0.2645    0.1368   -0.1705   -0.3510   -0.2208   -0.0814   -0.2098-0.0753   -0.2052    0.0271   -0.1471    0.0255    0.2960    0.0878   -0.0406    0.0869   -0.2048   -0.1195    0.0511   -0.2404   -0.1403    0.0803    0.2615-0.3351    0.2397    0.1265    0.2218    0.1518    0.2169    0.1668   -0.2064    0.3036    0.0395    0.0710   -0.2489   -0.1264    0.2013   -0.0207   -0.23880.0250    0.1444    0.1280    0.3898   -0.0709    0.0511    0.1749   -0.1349   -0.0674   -0.3187    0.1334    0.1090    0.0237   -0.1019   -0.2342    0.2429

b\bf bb中元素如下:

>> b'
ans =1 至 16 列-0.0658   -0.2154   -0.5224    0.2072    0.5548   -0.0287   -0.2421   -0.0407   -0.7217    0.3588    0.3037   -1.1094   -0.3933   -0.1250   -0.1057    0.200917 至 32 列-0.9870   -0.1331    0.1920   -0.0041    0.3052    0.0204   -0.0556    0.1310    0.0982   -0.2775    0.1520    0.4662   -0.7468    0.4912    0.4592   -0.8430

若ϵ0=0.01\epsilon_0=0.01ϵ0​=0.01,可以得到解x\bf xx如图1,其中红色为OMP,蓝色为MP。可以看到二者几乎相同,MP比OMP略多几个取值很小的非零解。图2为ϵ0=0.001\epsilon_0=0.001ϵ0​=0.001的情况,MP的非零解个数进一步增加,但值都比较小。因此,总体来看,OMP性能更好,但是由于每次迭代都需要更新所有的临时解,因此复杂度高于MP算法。

OMP与MP算法流程与代码相关推荐

  1. MeanTeacher文章解读+算法流程+核心代码详解

    MeanTeacher 本博客仅做算法流程疏导,具体细节请参见原文 原文 原文链接点这里 Github 代码 Github代码点这里 解读 论文解读点这里 算法流程 代码详解 train_transf ...

  2. FixMatch文章解读+算法流程+核心代码详解

    FixMatch 本博客仅做算法流程疏导,具体细节请参见原文 原文 查看原文点这里 Github代码 Github代码点这里 解读 FixMatch算法抓住了半监督算法的两个重要观点,第一个是一致性正 ...

  3. Sunday算法流程与代码

    写得比较马虎,欢迎大家指正. 直接看例子 首先初始化一个map,也可以用大小为256的int数组,数组中记录了较短字符串中字母出现的最后一个位置,如str = "abad" map ...

  4. 隐马尔科夫模型 (HMM) 算法介绍及代码实现

    Table of Contents Hidden Markov Model (隐马尔科夫模型) 定义 基本问题 前向算法 算法流程 实现代码 后向算法 算法流程 实现代码 Viterbi算法 算法流程 ...

  5. MP算法与OMP算法讲解二

    转自:http://blog.csdn.net/scucj/article/details/7467955 主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Mat ...

  6. 体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)...

    转自:http://blog.csdn.net/liu_lin_xm/article/details/4850630 摘抄"GPU Programming And Cg Language P ...

  7. 【机器学习】K-Means算法的原理流程、代码实现及优缺点

    分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中.机器学习中常见的分类算法有:SVM(支持向量机).KNN(最邻近法).Decision Tree(决策树分类法) ...

  8. 写文件头的算法流程及C代码实现

    一.问题描述 将多条记录写入文件中,每条记录占一行.每写入一条记录,要计算当前文件中所有记录的大小(精确到字节)和记录条数,并写到文件的第一行(即文件头).为了便于区分,文件记录的大小和文件中记录条数 ...

  9. 美颜sdk人脸美妆代码分析、算法流程

    美颜sdk人像美妆是非常重要的一个功能,目前深受广大用户喜爱,本篇文章小编将为大家讲解一下美颜sdk人像美妆功能的代码以及算法实现流程. 1.人像美妆算法流程 首先进行妆容模板制作,主要由Photos ...

  10. 【机器学习】一文读懂异常检测 LOF 算法(Python代码)

    本篇介绍一个经典的异常检测算法:局部离群因子(Local Outlier Factor),简称LOF算法. 背景 Local Outlier Factor(LOF)是基于密度的经典算法(Breunin ...

最新文章

  1. 波卡链Substrate (6)Babe协议一“基本概念”
  2. 【 HDU - 5459】Jesus Is Here(dp)
  3. 机器学习之线性回归(matlab)
  4. 【2016年第5期】研究(国家自然科学基金项目成果集萃)导读
  5. C/C++: OpenSSL实现https GET POST请求
  6. 阿里登顶毕马威全球企业创新榜 AliOS引领智能网联汽车产业发展
  7. Android第二十四期 - 游戏公告跑马灯效果
  8. Makefile 教程(超详细)
  9. 一篇文告诉你各行业视频监控录像的要求,看看你是否达标
  10. 2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】
  11. D-Tale,实现Pandas GUI高效数据分析
  12. leaflet快速渲染聚合矢量瓦片(附源码下载)
  13. Anki 学习指南(优质资源 教程总结)
  14. STM32---ucosii和ucosiii
  15. 使用_findfirst和_findnext遍历目录
  16. matlab计算macd_[原创]基于MATLAB的一个简单的交易策略(基于MACD)的Matlab代码-经管之家官网!...
  17. Kestrel简介_Kestrel Web 服务器简介
  18. python并发编程-进程池线程池-协程-I/O模型-04
  19. 开学splay(这个模版要背的滚瓜烂熟)
  20. shell小技巧(一百三十三)n个人报数出局游戏

热门文章

  1. 静态库与动态库的制作
  2. 爬虫之煎蛋网妹子图 大爬哦
  3. 计算机定义函数求出以下,求大神看一下 计算机提示 函数定义不合法
  4. android 快速启动 hibernate,什么是快速启动以及如何在Windows中启用或禁用它 | MOS86...
  5. 极光短信验证码JAVA_Android如何集成极光短信验证
  6. java getSource()和 getActionCommand()区别
  7. wordpress如何压缩HTML代码
  8. vue变量赋值到html,jsvue data变量相互赋值后被实时同步的解决步骤js大全-js开发...
  9. Linux学习笔记1 - Linux系统简介
  10. linux 使用ssr客户端_React从CSR到SSR:第一篇