贪婪算法中正交匹配追踪算法OMP的原理及仿真
压缩感知重构算法之正交匹配追踪(OMP)
前面经过几篇的基础铺垫,本篇给出正交匹配追踪(OMP)算法的MATLAB函数代码,并且给出单次测试例程代码、测量数M与重构成功概率关系曲线绘制例程代码、信号稀疏度K与重构成功概率关系曲线绘制例程代码。
0、符号说明如下:
压缩观测y=Φx,其中y为观测所得向量M×1,x为原信号N×1(M<
(1) y为观测所得向量,大小为M×1
(2)x为原信号,大小为N×1
(3)θ为K稀疏的,是信号在x在某变换域的稀疏表示
(4)Φ称为观测矩阵、测量矩阵、测量基,大小为M×N
(5)Ψ称为变换矩阵、变换基、稀疏矩阵、稀疏基、正交基字典矩阵,大小为N×N
(6)A称为测度矩阵、传感矩阵、CS信息算子,大小为M×N
上式中,一般有K<
1、OMP重构算法流程:
2、正交匹配追踪(OMP)MATLAB代码(CS_OMP.m)
[plain] view plaincopy
1. function [ theta ] = CS_OMP( y,A,t )
2. %CS_OMP Summary of this function goes here
3. %Version: 1.0 written by jbb0523 @2015-04-18
4. % Detailed explanation goes here
5. % y = Phi * x
6. % x = Psi * theta
7. % y = Phi*Psi * theta
8. % 令 A = Phi*Psi, 则y=A*theta
9. % 现在已知y和A,求theta
10. [y_rows,y_columns] = size(y);
11. if y_rows
12. y = y';%y should be a column vector
13. end
14. [M,N] = size(A);%传感矩阵A为M*N矩阵
15. theta = zeros(N,1);%用来存储恢复的theta(列向量)
16. At = zeros(M,t);%用来迭代过程中存储A被选择的列
17. Pos_theta = zeros(1,t);%用来迭代过程中存储A被选择的列序号
18. r_n = y;%初始化残差(residual)为y
19. for ii=1:t%迭代t次,t为输入参数 20. product = A'*r_n;%传感矩阵A各列与残差的内积
21. [val,pos] = max(abs(product));%找到最大内积绝对值,即与残差最相关的列
22. At(:,ii) = A(:,pos);%存储这一列
23. Pos_theta(ii) = pos;%存储这一列的序号
24. A(:,pos) = zeros(M,1);%清零A的这一列,其实此行可以不要,因为它与残差正交
25. %y=At(:,1:ii)*theta,以下求theta的最小二乘解(Least Square)
26. theta_ls = (At(:,1:ii)'*At(:,1:ii))^(-1)*At(:,1:ii)'*y;%最小二乘解
27. %At(:,1:ii)*theta_ls是y在At(:,1:ii)列空间上的正交投影
28. r_n = y - At(:,1:ii)*theta_ls;%更新残差
29. end
30. theta(Pos_theta)=theta_ls;%恢复出的theta
31. end
3、OMP单次重构测试代码(CS_Reconstuction_Test.m)
代码中,直接构造一个K稀疏的信号,所以稀疏矩阵为单位阵。
[plain] view plaincopy
1. %压缩感知重构算法测试
2. clear all;close all;clc;
3. M = 64;%观测值个数
4. N = 256;%信号x的长度
5. K = 10;%信号x的稀疏度
6. Index_K = randperm(N);
7. x = zeros(N,1);
8. x(Index_K(1:K)) = 5*randn(K,1);%x为K稀疏的,且位置是随机的
9. Psi = eye(N);%x本身是稀疏的,定义稀疏矩阵为单位阵x=Psi*theta
10. Phi = randn(M,N);%测量矩阵为高斯矩阵
11. A = Phi * Psi;%传感矩阵
12. y = Phi * x;%得到观测向量y
13. %% 恢复重构信号x
14. tic
15. theta = CS_OMP(y,A,K);
16. x_r = Psi * theta;% x=Psi * theta
17. toc
18. %% 绘图
19. figure;
20. plot(x_r,'k.-');%绘出x的恢复信号
21. hold on;
22. plot(x,'r');%绘出原信号x
23. hold off;
24. legend('Recovery','Original')
25. fprintf('\n恢复残差:');
26. norm(x_r-x)%恢复残差 运行结果如下:(信号为随机生成,所以每次结果均不一样)
1)图:
2)Command Windows
Elapsed time is 0.849710 seconds.
恢复残差:
ans =
5.5020e-015
4、测量数M与重构成功概率关系曲线绘制例程代码
[plain] view plaincopy
1. %压缩感知重构算法测试CS_Reconstuction_MtoPercentage.m
2. % 绘制参考文献中的Fig.1
3. % 参考文献:Joel A. Tropp and Anna C. Gilbert
4. % Signal Recovery From Random Measurements Via Orthogonal Matching
5. % Pursuit,IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 53, NO. 12,
6. % DECEMBER 2007.
7. % Elapsed time is 1171.606254 seconds.(@20150418night)
8. clear all;close all;clc;
9. %% 参数配置初始化
10. CNT = 1000;%对于每组(K,M,N),重复迭代次数
11. N = 256;%信号x的长度 12. Psi = eye(N);%x本身是稀疏的,定义稀疏矩阵为单位阵x=Psi*theta
13. K_set = [4,12,20,28,36];%信号x的稀疏度集合
14. Percentage = zeros(length(K_set),N);%存储恢复成功概率
15. %% 主循环,遍历每组(K,M,N)
16. tic
17. for kk = 1:length(K_set)
18. K = K_set(kk);%本次稀疏度
19. M_set = K:5:N;%M没必要全部遍历,每隔5测试一个就可以了
20. PercentageK = zeros(1,length(M_set));%存储此稀疏度K下不同M的恢复成功概率
21. for mm = 1:length(M_set)
22. M = M_set(mm);%本次观测值个数
23. P = 0;
24. for cnt = 1:CNT %每个观测值个数均运行CNT次
25. Index_K = randperm(N);
26. x = zeros(N,1);
27. x(Index_K(1:K)) = 5*randn(K,1);%x为K稀疏的,且位置是随机的
28. Phi = randn(M,N);%测量矩阵为高斯矩阵
29. A = Phi * Psi;%传感矩阵
30. y = Phi * x;%得到观测向量y
31. theta = CS_OMP(y,A,K);%恢复重构信号theta
32. x_r = Psi * theta;% x=Psi * theta
33. if norm(x_r-x)<1e-6%如果残差小于1e-6则认为恢复成功
34. P = P + 1;
35. end
36. end
37. PercentageK(mm) = P/CNT*100;%计算恢复概率
38. end
39. Percentage(kk,1:length(M_set)) = PercentageK;
40. end
41. toc
42. save MtoPercentage1000 %运行一次不容易,把变量全部存储下来
43. %% 绘图
44. S = ['-ks';'-ko';'-kd';'-kv';'-k*'];
45. figure;
46. for kk = 1:length(K_set)
47. K = K_set(kk);
48. M_set = K:5:N;
49. L_Mset = length(M_set);
50. plot(M_set,Percentage(kk,1:L_Mset),S(kk,:));%绘出x的恢复信号
51. hold on;
52. end
53. hold off;
54. xlim([0 256]);
基于 OMP 算法的极化敏感阵列多参数估计
基于 OMP 算法的极化敏感阵列多参数估计
谢菊兰;许欣怡;李会勇
【摘 要】基于压缩感知的 DOA 估计方法在小快拍数下性能优越,并且具有天然的解相干能力,但在极化敏感阵列中运用很少。基于极化敏感阵列研究一种改进的
OMP 算法,能够成功估计出空域和极化域参数。该算法首先将极化敏感阵列信号接收矩阵重新建模,随后采用所提的改进 OMP 算法得到空域到达角估计结果。然后将求解出来的空域到达角代入到根据模值约束条件构造出来的代价函数中,通过闭合式解得到极化参数估计,从而实现了自动配对的空域和极化域的参数估计。仿真结果表明,该方法无论信号相干与否都能够得到良好的估计结果,并且在非相干情况下,估计性能总体优于极化 ESPRIT 算法及模值约束 MUSIC 算法。%The
DOA estimation algorithm based on compressive sensing has superior
performance in small snapshot and the natural ability of decorrelation,but
it is rarely used in the polarization sensitive array. In this paper,an
improved OMP algorithm based on polarization sensitive array is studied
to estimate the pa-rameters of the air domain and the polarization
domain.First,this algorithm remodels the signal receiving matrix of the
polarization sensitive array,followed by using the proposed improved OMP
压缩感知的重构算法
压缩感知的重构算法
算法的重构是压缩感知中重要的一步,是压缩感知的关键之处。因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优缺点,使用者可以根据自己的情况,选择适合自己的重构算法,大大增加了使用的灵活性,也为我们以后的研究提供了很大的方便。
压缩感知的重构算法主要分为三大类:
1.组合算法 2.贪婪算法 3.凸松弛算法
每种算法之中又包含几种算法,下面就把三类重构算法列举出来。
组合算法:先是对信号进行结构采样,然后再通过对采样的数据进行
分组测试,最后完成信号的重构。
(1) 傅里叶采样(Fourier Representaion)
(2) 链式追踪算法(Chaining Pursuit)
(3) HHS追踪算法(Heavy Hitters On Steroids)
贪婪算法:通过贪婪迭代的方式逐步逼近信号。
(1) 匹配追踪算法(Matching Pursuit MP)
(2) 正交匹配追踪算法(Orthogonal Matching Pursuit OMP)
(3) 分段正交匹配追踪算法(Stagewise Orthogonal Matching
Pursuit StOMP) (4) 正则化正交匹配追踪算法(Regularized Orthogonal Matching
Pursuit ROMP)
(5) 稀疏自适应匹配追踪算法(Sparisty Adaptive Matching Pursuit
SAMP)
凸松弛算法:
(1) 基追踪算法(Basis Pursuit BP)
(2) 最小全变差算法(Total Variation TV)
(3) 内点法(Interior-point Method)
贪婪算法的基本原理
贪婪算法的基本原理
贪婪算法(Greedy Algorithm)是一种常见的算法设计思想,它在每一步选择中都采取当前状态下最优的选择,以期望达到全局最优解。贪婪算法的基本原理可以概括为“局部最优选择,期望全局最优解”。在每个步骤中做出局部最优选择是贪婪算法的关键特点。
贪婪算法通常适用于满足贪婪选择性质(Greedy Choice Property)和最优子结构(Optimal Substructure)的问题。贪婪选择性质意味着通过做出局部最优选择,可以得到全局最优解。最优子结构意味着一个问题的最优解可以通过一系列子问题的最优解来表示。当一个问题具有最优子结构性质时,我们可以通过贪婪算法来求解问题。
1.定义问题的优化目标。
2.将问题分解为若干子问题,子问题必须满足最优子结构性质。
3.设计一个贪婪策略,通过局部最优选择来做出决策。
4.解决每个子问题,得到局部最优解。
5.将各个子问题的解合并,得到原问题的解。
不过,贪婪算法不一定能得到全局最优解,因为它只关注局部最优选择,并没有进行全局。有时,贪婪算法会陷入局部最优解而无法达到全局最优解。因此,在使用贪婪算法求解问题时,必须确保问题满足贪心选择性质和最优子结构性质。
贪婪算法在许多问题中都有广泛的应用。以下是几个常见问题的例子:
1.最小生成树问题:通过选择边的方式,连接图中的所有顶点,并使得选择的边权和最小。 2.背包问题:在给定的背包容量下,选择一些物品放入背包中,使得物品的总价值最大。
3.哈夫曼编码:通过贪心选择思想构建最优的可变长度编码,以实现数据的高效压缩。
4.集合覆盖问题:从一组集合中选择最少的集合,覆盖全集的元素。
总结起来,贪婪算法是一种简单有效的算法设计思想,它通过局部最优选择来逐步求解问题,并期望达到全局最优解。贪婪算法适用于满足贪心选择性质和最优子结构性质的问题,但不保证一定能得到全局最优解。在实际应用中,我们需要理解问题的特点和约束条件,并根据问题的性质选择适合的算法来解决问题。
基于 OMP 算法的振动信号去噪
基于OMP算法的振动信号去噪*
李建卓
【摘 要】针对机械振动信号在采集过程中容易夹杂大量噪声的问题,提出了一种使用正交匹配追踪算法用于实现振动信号与噪声的分离,从而达到了去除采集的振动信号中包含噪声的目的,并且还通过信噪比和均方误差这2个指标对去噪效果进行了检测。仿真结果表明,与使用传统的匹配追踪算法进行信号去噪的方法相比,正交匹配追踪算法不仅可以有效地滤除振动信号中夹杂的噪声,提高信噪比,还可以降低均方误差值,更好地防止振动信号的波形失真。
【期刊名称】新技术新工艺
【年(卷),期】2015(000)010
【总页数】4
【关键词】正交匹配追踪;振动信号;去噪
振动信号检测是对旋转机械进行状态监测和故障诊断的有效工具,但在实际工程采集时,振动信号很容易受到各种噪声的污染,有时甚至完全失真,从而对机械状态监测与故障诊断的正确性产生严重的干扰;因此,对振动信号进行去噪已经成为机械设备故障诊断研究的重要内容[1-4]。
匹配追踪(Matching Pursuit,MP)算法[5]是一种基于稀疏分解理论的信号处理方法,并且在地震监测、图像处理、医学信号检测和故障分析等领域[6-9]都得到了广泛的应用。MP算法的实质是先将信号在已构建好的过完备库中稀疏分解成多个原子,然后从中选出与信号最为相似的原子重构原始信号。目前,MP算法已被成功应用到多种信号的去噪中[10-13]。文献[14]已提出利用MP算法来去除振动信号中夹杂的噪声,虽然取得了显著的成效,但是由于MP算
法每次迭代选择的原子可能并不是最优的,而是次最优的,故收敛时需要增大迭代次数;因此,本文提出采用正交匹配追踪(Orthogonal Matching Pursuit,OMP)[15-16]算法实现振动信号的去噪。OMP算法在MP算法的基础上,对选出的原子进行正交化处理,保证了每次迭代的最优性,不会重复选择原子,减少了迭代的次数[17]。仿真结果表明,OMP算法在对振动信号去噪时优于MP算法。
超分辨 omp算法
超分辨 omp算法
超分辨率(Super-Resolution, SR)是一种图像处理技术,旨在将低分辨率图像转换为高分辨率图像。OMP算法是一种压缩感知重建算法,可以用于超分辨率图像重建。下面我将从几个方面来回答你关于超分辨率OMP算法的问题。
首先,让我们来谈谈超分辨率技术。超分辨率技术可以通过使用多个低分辨率图像来重建出高分辨率图像。这种技术对于图像处理和计算机视觉领域具有重要意义,因为它可以改善图像的质量,提高图像的清晰度和细节,对于监控、医学影像和卫星图像等领域有着广泛的应用。
其次,OMP算法是一种压缩感知重建算法,它可以用于超分辨率图像重建。OMP算法是一种基于稀疏表示的算法,它利用信号的稀疏性来重建信号。在超分辨率图像重建中,OMP算法可以利用低分辨率图像的信息来重建出高分辨率图像,从而实现图像的超分辨率处理。
此外,超分辨率OMP算法的实现通常包括以下几个步骤,首先,对低分辨率图像进行预处理,例如去噪处理和图像配准;然后,利用OMP算法对预处理后的低分辨率图像进行稀疏表示;接着,利用稀疏表示的结果来重建出高分辨率图像;最后,对重建得到的高分辨率图像进行后处理,例如锐化处理和去马赛克处理。
总的来说,超分辨率OMP算法是一种有效的图像重建算法,它可以通过利用低分辨率图像的信息来重建出高分辨率图像,从而实现图像的超分辨率处理。这种算法在实际应用中具有广泛的应用前景,可以为图像处理和计算机视觉领域带来更多的发展机遇。
MP算法和OMP算法及其思想 - 逍遥剑客的专栏 - 博客频道 - CSDN
2015/9/22MP算法和OMP算法及其思想 逍遥剑客的专栏 博客频道
data:text/html;charset=utf8,%3Cdiv%20class%3D%22article_title%22%20style%3D%22display%3A%20block%3B%20margin%3A%205px%200px%3B…1/8分类: 数据结构与算法MP算法和OMP算法及其思想
20120417 03:09 47807人阅读 评论(59) 收藏 举报算法orthogonalmatlabfunction工具
主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1],这两个算法虽然在90年代初就提出来了,但作为经典的算法,国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用,并未对其进行详尽的分析,国外的文献还是分析的很透彻,所以我结合自己的理解,来分析一下写到博客里,算作笔记。
1. 信号的稀疏表示(sparse representation of signals)给定一个过完备字典矩阵,其中它的每列表示一种原型信号的原子。给定一个信号y,它可以被表示成这些原子的稀疏线性组合。信号 y 可以被表达为 y = Dx ,或者。 字典矩阵中所谓过完备性,指的是原子的个数远远大于信号y的长度(其长度很显然是n),即n<
2.MP算法(匹配追踪算法)
2.1 算法描述
作为对信号进行稀疏分解的方法之一,将信号在完备字典库上进行分解。
假定被表示的信号为y,其长度为n。假定H表示Hilbert空间,在这个空间H里,由一组向量构成字典矩阵D,其中每个向量可以称为原子(atom),其长度与被表示信号 y 的长度n相同,而且这些向量已作为归一化处理,即|,也就是单位向量长度为1。MP算法的基本思想:从字典矩阵D(也称为过完备原子库中),选择一个与信号 y 最匹配的原子(也就是某列),构建一个稀疏逼近,并求出信号残差,然后继续选择与信号残差最匹配的原子,反复迭代,信号y可以由这些原子来线性和,再加上最后的残差值来表示。很显然,如果残差值在可以忽略的范围内,则信号y就是这些原子的线性组合。如果选择与信号y最匹配的原子?如何构建稀疏逼近并求残差?如何进行迭代?我们来详细介绍使用MP进行信号分解的步骤:[1] 计算信号 y 与字典矩阵中每列(原子)的内积,选择绝对值最大的一个原子,它就是与信号 y 在本次迭代运算中最匹配的。用专业术语来描述:令信号,从字典矩阵中选择一个最为匹配的原子,满足,r0 表示一个字典矩阵的列索引。这样,信号 y 就被分解为在最匹配原子的垂直投影分量和残值两部分,即:。[2]对残值R1f进行步骤[1]同样的分解,那么第K步可以得到:
omp算法 归一化
omp算法 归一化
OMP(Orthogonal Matching Pursuit)算法是一种用于信号重构和压缩感知的迭代逼近算法。该算法的核心思想是通过选择一组前若干个原子(即信号的基)来逼近待重构的信号,并同时利用残差来更新所选原子的权重。OMP算法具有高效、可解释性好的特点,并在图像处理、语音处理、通信等领域得到了广泛的应用。
OMP算法的步骤如下:
1. 初始化:设定迭代次数K和信号重构的误差阈值ε,并初始化重构信号x^0为全零向量。
2. 选择原子:在每一次迭代中,从原子字典D中选择一个最相关的原子d_j与重构信号的残差r进行内积,即计算内积值abs()。在第一次迭代中,选择内积值最大的原子d_j,并将其添加到重构信号中;在后续的迭代中,选择与残差r垂直的最相关原子。
3. 更新重构信号:将选择的原子加到重构信号x中,得到新的重构信号x^k,并更新残差向量r为待重构信号y与重构信号x^k的差值。
4. 终止条件:判断当前残差向量的模是否小于设定的阈值ε,如果满足,则停止迭代;否则,返回步骤2。
OMP算法在信号重构与压缩感知中的应用主要体现在以下几个方面:
1. 信号重构:将稀疏信号表示为原子字典的线性组合,通过选择与残差向量最相关的原子进行逼近,以达到信号重构的效果。由于OMP算法能够选择与残差向量垂直的原子,因此可以更准确地重构信号,提高重构质量。
2. 特征选择:通过选择与待重构信号相似度最高的原子,可以快速确定信号中的关键特征。在图像处理和语音处理等领域中,特征选择是一项非常重要的任务,通过OMP算法可以高效地选择出重要的特征,提高解析度或者减少噪声的影响。
3. 数据压缩:在一些对带宽有限或传输速率有限的场景下,如传感器网络、无线通信等应用中,数据压缩既可以减少存储空间的需求,又可以减少数据传输的时间和能量消耗。OMP算法可以利用信号的稀疏性来实现数据的压缩,将稀疏信号表示为原子字典的线性组合,从而降低数据的维度和存储量。
贪婪算法重构信号性能研究
第30卷第11期 计算机仿真 2013年11月
文章编号:1006—9348(2013)11—0255—05
贪婪算法重构信号性能研究
季秀霞,卞晓晓
(南京航空航天大学金城学院,江苏南京211156)
摘要:在信号重构优化问题的研究中,压缩感知理论是一种充分利用信号稀疏性或者可压缩性的全新的信号采样理论,通过 采集少量的信号值就可以实现稀疏性或可压缩信号的精确重构。为了准确重构信号,利用压缩感知理论与一系列用于信号 重构的贪婪算法,提出了一种改进的正交匹配追踪算法,通过设置限性下降的迭代阈值挑选原子,采用简单有效的剔除小系
数原子更新支撑集,对信号的稀疏度进行白适应估计,从而实现信号重构。针对一维信号和二维图像做了仿真,比较各类贪
婪算法的重构精度和重建构速度方面的差异。仿真结果表明,改进算法可以准确有效重构信号,同时运算量也较低,具有一 定的优势。
关键词:压缩感知;信号重构;贪婪算法;匹配追踪
中图分类号:TP911.73 文献标识码:A
Study on Performance of Greedy Algorithms for Signal Reconstruction
JI Xiu—xia.BIAN Xiao—xiao
(Jincheng College,Nanjing University of Aeronautics and Astronautics,Nanjing Jiangsu 21 1 156,China)
ABSTRACT:Compressive sensing is a novel signal sampling theory under the condition that the signals are sparse or
compressible.In this case,the small amount of signal values can be reconstructed accurately when the signals are
基于压缩感知的 OMP 改进重构算法
基于压缩感知的 OMP 改进重构算法
王军;孔令斌;赵洁
【摘 要】针对无线通信网络近些年出现的大数据量信号的情况,在对信号采样的同时进行适当压缩,利用合适的重构算法实现了用少量的采样值或观测值对信号进行重构。在原有基于 OMP(正交匹配追踪)的压缩感知重构算法的基础上引入
AS(交替步长),提出一种新的改进算法———GP-OMP(梯度正交匹配追踪)算法。实验结果表明,该改进算法利用前一感知时刻获得的频谱信息,不仅能有效地降低重构算法的计算量,还能有效地减少重构耗时,并得到与原有方法基本一致的重构效果。%In view of the emergence of mega data signals in wireless
communication networks in recent years,this paper proper-ly compresses
these signals while performing signal sampling and realizes their
reconstruction with small amount sampling val-ue or observed value by
using an appropriate reconstruction algorithm.On the basis of the original
Orthogonal Matching Pur-suit (OMP)-based compressed sensing
reconstruction algorithm,the Alternating Step-size (AS)is introduced and
an improved algorithm,i.e.GP-OMP algorithm proposed.Experimental
results show that the spectrum information this algorithm ob-tained by
OMP压缩感知重构仿真
OMP压缩感知重构仿真
clc;clear
%% 1. 时域测试信号生成
%产生长度为N=256的稀疏信号,其稀疏度K=23且这23个非零值随机分布于信号256个位置
%观测向量y的长度M=80,即采样率M/N=0.3
N=256;
K=23;
M=80;
x = zeros(N,1);
q = randperm(N);
x(q(1:K)) =randn(K,1); %原始信号
%% 2. 测量矩阵及观测值获得
Phi=randn(M,N); %测量矩阵% 感知矩阵(高斯分布白噪声)M*N
matrixNorm = Phi.'*Phi;
matrixNorm = sqrt(diag(matrixNorm)).';
Phi = Phi./repmat(matrixNorm, [M,1]); %注意,观测矩阵是要归一化的,因为原子范数要是1!
y=Phi*x ; %获得线性测量
%% 3.用MP算法重构信号
iterations=K; % 算法迭代次数(m>=K)
%signal_reconstruct=zeros(1,1); % 近似解矩阵(初始值为空矩阵)
r_n=y; % 残差值M*1
x_rec=zeros(N,1);
for times=1:iterations
for col=1:N %感知矩阵的所有列向量
innerpro(col)=Phi(:,col)'*r_n; %计算余量和感知矩阵每一列的内积end
[val,pos]=max(abs(innerpro) ); %找出内积中绝对值最大的元素和它的对应的感知矩阵的列pos
x_rec(pos)=x_rec(pos)+innerpro(pos); %计算新的近似x_rec
r_n=r_n-innerpro(pos)*Phi(:,pos); %更新残差
end
norm(x_rec-x)/norm(x) % 重构误差
subplot(3,1,1);plot(x);title('origin');
