OMP与MP算法流程与代码

article/2025/10/22 21:19:43

目录

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

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

1. 算法描述


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

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

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

%MP算法:

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

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

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

2. 部分公式推导

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

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

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

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

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

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

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 A A中元素如下:

>> 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 b b中元素如下:

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

在这里插入图片描述


http://chatgpt.dhexx.cn/article/BGLQlYnt.shtml

相关文章

并行计算(MPI + OpenMP)

文章目录 并行计算MPI&#xff08;进程级并行&#xff09;基本结构数据类型点对点通信阻塞非阻塞非连续数据打包 聚合通信Communicator & Cartisen Grid OpenMP&#xff08;线程级并行&#xff09;简介基本制导语句worksharing constructSectionsSingleFor 临界区 & 原…

算法5:普里姆算法

目录 1. 应用场景-修路问题2. 最小生成树3. 普里姆算法介绍4. 代码实现 1. 应用场景-修路问题 有7个村庄(A, B, C, D, E, F, G) &#xff0c;现在需要修路把7个村庄连通各个村庄的距离用边线表示(权) &#xff0c;比如 A – B 距离 5公里问&#xff1a;如何修路保证各个村庄都能…

使用粒子群PSO算法实现MPPT-M语言仿真

在Octave以及Matlab上&#xff0c;仿真了使用粒子群PSO实现MPPT的过程。粒子数为4。太阳能电池为4个串联。 2019年4月24日更新matlab代码。 目录 1.1 先绘制出PV曲线&#xff08;Octave&#xff09; 1.2 PSO算法&#xff08;Octave&#xff09; 2.1 绘制PV曲线&#xff08…

MPP概述

什么是MPP MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群&#xff08;传统的单节点不属于集群&#xff0c;双机热备或Oracle RAC等&#xff0c;均是基于共享存储的&#xff09;中&#xff0c;每个节点都有独立的磁盘存储系…

粒子群算法(PSO)光伏发电 MPPT实现多峰值寻优,阴影遮蔽光伏发电算法 使用s函数编写粒子群算法,阴影遮蔽,实现多峰值寻优

粒子群算法&#xff08;PSO&#xff09;光伏发电 MPPT实现多峰值寻优&#xff0c;阴影遮蔽光伏发电算法 使用s函数编写粒子群算法&#xff0c;阴影遮蔽&#xff0c;实现多峰值寻优&#xff0c;解决经典mppt算法会形成局部最优的问题&#xff0c;追踪到最大峰值功率输出。 粒子群…

基于PSO粒子群算法的MPPT最大功率跟踪Simulink仿真,PSO采用S函数实现

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MPPT控制器的全称是“最大功率点跟踪”&#xff08;Maximum Power Point Tracking&#xff09;太阳能控制器&#xff0c;是传统太阳能充放电控制器的升级换代产品。MPPT控制器能够实时侦测太阳能…

理解MP算法

转载&#xff1a;http://blog.csdn.net/u010103202/article/details/50932936 2&#xff0e;MP算法 作为一类贪婪算法&#xff0c;MP算法的基本思路是在迭代中不断找寻最有测量矩阵列来逼近被表示向量&#xff0c;继而寻得最优的稀疏逼近&#xff0c;使得x与y的残差最小。对于…

matlab simulink光伏发电系统MPPT算法

1、内容简介 略 553-可以交流、咨询、答疑 2、内容说明 世界各国能源需求的不断增长&#xff0c;以及传统能源资源的消耗和对环境的不良影 响&#xff0c;促使社会寻找替代能源。因此光伏发电成为研究热点之一&#xff0c;在对光伏电池的 研究中最大功率点追踪 (Maximum Pow…

MP算法与OMP算法

稀疏编码的一般最优化公式为&#xff1a; 其中的零范数为非凸优化。那么如何解这么一个非凸优化问题呢&#xff1f;其中一个常用的解法就是MP算法。 MP算法 MP算法是一种贪心算法&#xff08;greedy&#xff09;&#xff0c;每次迭代选取与当前样本残差最接近的原子&#xff0…

光伏并网MPPT算法控制解析

01 MPPT介绍 太阳能光伏发电是当前利用新能源的主要方式之一&#xff0c;光伏并网发电的主要问题是提高系统中太阳能电池阵列的工作效率和整个系统的工作稳定性&#xff0c;MPPT&#xff08;Maximum power point tracking,最大功率点跟踪&#xff09;是太阳能光伏发电系统中的…

MPC算法

MPC算法 一. 引言 在工程技术方面&#xff0c;MPC全称可指Model Predictive Control模型预测控制&#xff08;又称RHC, Receding Horizon &#xff09;。 模型预测控制算法 一种进阶过程控制方法&#xff0c;自1980年以来开始在化工炼油等过程工业得到应用&#xff0c;并在经…

MP算法和OMP算法及其思想与实现

主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1]&#xff0c;这两个算法虽然在90年代初就提出来了&#xff0c;但作为经典的算法&#xff0c;国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用&#xff0c;并未对其进行详尽的分析&…

MP算法

MP算法 MP算法是一种贪心算法&#xff08;greedy&#xff09;&#xff0c;每次迭代选取与当前样本残差最接近的原子&#xff0c;直至残差满足一定条件。 求解方法 首先解决两个问题&#xff0c;怎么定义“最接近原子”&#xff0c;怎么计算残差&#xff1f; 选择最接近残差的原…

MP算法和OMP算法及其思想

主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1]&#xff0c;这两个算法虽然在90年代初就提出来了&#xff0c;但作为经典的算法&#xff0c;国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用&#xff0c;并未对其进行详尽的分析&…

学习笔记2 光伏MPPT算法

目录 前言1. 光伏电池的分类1.1 按照电池结构分类1.2 按照电池材料分类: 2. 光伏电池模型及光伏特性曲线2.1 光伏电池模型2.2 光伏特性曲线 3. 影响光伏电池输出特性曲线的两个主要因素3.1 光照的影响3.1.1 光照对I-V曲线的影响3.1.2 光照对P-V曲线的影响3.1.3 光照对P-I曲线的…

光伏发电最大功率点跟踪MPPT(粒子群算法)

光伏电池作为太阳能发电的核心部件&#xff0c;实现了太阳能到电能的转换&#xff0c;但是由于光伏电池器件本身的复杂性以及现如今光电材料的限制&#xff0c;光伏电池的转换效率总体来说还是比较低&#xff0c;而且其输出还是非线性的&#xff0c;并且光照强度和外界温度对其…

光伏逆变器MPPT基本算法介绍-李星硕

前言 在上一个话题中&#xff0c;我们阐述了光伏MPPT基本原理&#xff1a;从本质上来说&#xff0c;MPPT算法均是通过DC-DC的占空比d来进行控制的。至于如何计算占空比d的值&#xff0c;则取决于具体的MPPT算法。那么在本话题中&#xff0c;我们将介绍两种基本的MPPT算法&#…

MPPT算法(恒定电压、扰动观察、电导增量)介绍与实现过程

目录 1、太阳能板的特性曲线 2、固定电压法 3、MPPT-P&O算法 4、电导增量算法 5、系统实现方案 1、太阳能板的特性曲线 太阳能板也叫光伏电池。是通过光电效应&#xff0c;把光能转换为电能的设备。 先介绍太阳能板的特性。太阳能的额定参数是在地面光伏组件标准测试…

嵌入式怎么入门,嵌入式应该先学习什么

嵌入式到底是什么&#xff0c;很多对这个概念都很迷糊&#xff0c;许多人都认为这是工程师的代名词。 嵌入式工程师可以说是目前涵盖面最广、最火的职业之一&#xff0c;那么到底什么是嵌入式呢&#xff1f; 狭义上嵌入式系统由硬件和软件组成&#xff0e;是能够独立进行运作的…

嵌入式通用学习路线整理

大家好&#xff0c;我是小麦。 从事嵌入式相关行业&#xff0c;差不多快有10年时间了&#xff0c;走过很多弯路&#xff0c;踩过很多坑。 很多人会问&#xff0c;嵌入式真的没有前途吗&#xff1f;这个我其实也无法回答。用发展的眼光来看&#xff0c;万物都有周期。 这个和嵌入…