OMP与MP算法流程与代码
目录
- 1. 算法描述
- 2. 部分公式推导
- 3. 算法代码
- 3.1 OMP算法代码
- 3.2 MP算法代码
- 4. 例子
本文算法描述主要来自下面书籍的3.1节。
[1] 【以色列】Michael Elad著. 曹铁勇等翻.《稀疏与冗余表示–理论及其在信号与图像处理中的应用》.国防工业出版社. 2015.
1. 算法描述
(1) 任务:近似求解(P0P_0P0)问题:minx∣∣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∗=ajTrk−1/∣∣aj∣∣22,并得到误差ϵ(j)=minzj∣∣ajzj∗−rk−1∣∣22\epsilon(j)=\min_{z_j}||{\bf a}_jz_j^*-{\bf r}^{k-1}||_2^2ϵ(j)=minzj∣∣ajzj∗−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)=minzj∣∣ajzj−rk−1∣∣22,(1)\tag{1} \epsilon(j)=\min_{z_j}||{\bf a}_jz_j-{\bf r}^{k-1}||_2^2, ϵ(j)=zjmin∣∣ajzj−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算法流程与代码相关推荐
- MeanTeacher文章解读+算法流程+核心代码详解
MeanTeacher 本博客仅做算法流程疏导,具体细节请参见原文 原文 原文链接点这里 Github 代码 Github代码点这里 解读 论文解读点这里 算法流程 代码详解 train_transf ...
- FixMatch文章解读+算法流程+核心代码详解
FixMatch 本博客仅做算法流程疏导,具体细节请参见原文 原文 查看原文点这里 Github代码 Github代码点这里 解读 FixMatch算法抓住了半监督算法的两个重要观点,第一个是一致性正 ...
- Sunday算法流程与代码
写得比较马虎,欢迎大家指正. 直接看例子 首先初始化一个map,也可以用大小为256的int数组,数组中记录了较短字符串中字母出现的最后一个位置,如str = "abad" map ...
- 隐马尔科夫模型 (HMM) 算法介绍及代码实现
Table of Contents Hidden Markov Model (隐马尔科夫模型) 定义 基本问题 前向算法 算法流程 实现代码 后向算法 算法流程 实现代码 Viterbi算法 算法流程 ...
- MP算法与OMP算法讲解二
转自:http://blog.csdn.net/scucj/article/details/7467955 主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Mat ...
- 体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)...
转自:http://blog.csdn.net/liu_lin_xm/article/details/4850630 摘抄"GPU Programming And Cg Language P ...
- 【机器学习】K-Means算法的原理流程、代码实现及优缺点
分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中.机器学习中常见的分类算法有:SVM(支持向量机).KNN(最邻近法).Decision Tree(决策树分类法) ...
- 写文件头的算法流程及C代码实现
一.问题描述 将多条记录写入文件中,每条记录占一行.每写入一条记录,要计算当前文件中所有记录的大小(精确到字节)和记录条数,并写到文件的第一行(即文件头).为了便于区分,文件记录的大小和文件中记录条数 ...
- 美颜sdk人脸美妆代码分析、算法流程
美颜sdk人像美妆是非常重要的一个功能,目前深受广大用户喜爱,本篇文章小编将为大家讲解一下美颜sdk人像美妆功能的代码以及算法实现流程. 1.人像美妆算法流程 首先进行妆容模板制作,主要由Photos ...
- 【机器学习】一文读懂异常检测 LOF 算法(Python代码)
本篇介绍一个经典的异常检测算法:局部离群因子(Local Outlier Factor),简称LOF算法. 背景 Local Outlier Factor(LOF)是基于密度的经典算法(Breunin ...
最新文章
- 波卡链Substrate (6)Babe协议一“基本概念”
- 【 HDU - 5459】Jesus Is Here(dp)
- 机器学习之线性回归(matlab)
- 【2016年第5期】研究(国家自然科学基金项目成果集萃)导读
- C/C++: OpenSSL实现https GET POST请求
- 阿里登顶毕马威全球企业创新榜 AliOS引领智能网联汽车产业发展
- Android第二十四期 - 游戏公告跑马灯效果
- Makefile 教程(超详细)
- 一篇文告诉你各行业视频监控录像的要求,看看你是否达标
- 2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】
- D-Tale,实现Pandas GUI高效数据分析
- leaflet快速渲染聚合矢量瓦片(附源码下载)
- Anki 学习指南(优质资源 教程总结)
- STM32---ucosii和ucosiii
- 使用_findfirst和_findnext遍历目录
- matlab计算macd_[原创]基于MATLAB的一个简单的交易策略(基于MACD)的Matlab代码-经管之家官网!...
- Kestrel简介_Kestrel Web 服务器简介
- python并发编程-进程池线程池-协程-I/O模型-04
- 开学splay(这个模版要背的滚瓜烂熟)
- shell小技巧(一百三十三)n个人报数出局游戏
热门文章
- 静态库与动态库的制作
- 爬虫之煎蛋网妹子图 大爬哦
- 计算机定义函数求出以下,求大神看一下 计算机提示 函数定义不合法
- android 快速启动 hibernate,什么是快速启动以及如何在Windows中启用或禁用它 | MOS86...
- 极光短信验证码JAVA_Android如何集成极光短信验证
- java getSource()和 getActionCommand()区别
- wordpress如何压缩HTML代码
- vue变量赋值到html,jsvue data变量相互赋值后被实时同步的解决步骤js大全-js开发...
- Linux学习笔记1 - Linux系统简介
- linux 使用ssr客户端_React从CSR到SSR:第一篇