| 查看: 427 | 回复: 2 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
有没有压缩感知方面的MATLAB代码,参考参考哈!!
|
|||
| 如题,哪位大侠能否给些压缩感知重构的MATLAB代码示例,参考一下,如OMP,ROMP,BP,最小二乘法等等,谢谢啦 |
» 猜你喜欢
实验室接单子
已经有6人回复
假如你的研究生提出不合理要求
已经有11人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
» 本主题相关价值贴推荐,对您同样有帮助:
压缩感知 用TV来做约束,CT重建,求相关文献及Demo代码学习
已经有9人回复
图像处理现在有哪些比较热的方面呢,除了压缩感知。。。
已经有13人回复
最近感觉压缩感知大热,想求一些这方面的经典文献~~
已经有16人回复
那位朋友能指点下 压缩感知方面比较热门的研究方向有哪些?谢谢了
已经有8人回复
【转载】压缩感知方面一篇很好的科普文章
已经有18人回复
|
clc;clear %% 1. 时域测试信号生成 K=7; % 稀疏度(做FFT可以看出来) N=256; % 信号长度 M=64; % 测量数(M>=K*log(N/K),至少40,但有出错的概率) f1=50; % 信号频率1 f2=100; % 信号频率2 f3=200; % 信号频率3 f4=400; % 信号频率4 fs=800; % 采样频率 ts=1/fs; % 采样间隔 Ts=1:N; % 采样序列 x=0.3*cos(2*pi*f1*Ts*ts)+0.6*cos(2*pi*f2*Ts*ts)+0.1*cos(2*pi*f3*Ts*ts)+0.9*cos(2*pi*f4*Ts*ts); % 完整信号 % y=fft(x,N); % n=0:N-1; % yy=abs(y); % yy=yy*2/N; % f=n*fs/N; % figure; % plot(f,yy) %% 2. 时域信号压缩传感 Phi=randn(M,N); % 测量矩阵(高斯分布白噪声) s=Phi*x.'; % 获得线性测量 %% 3. 正交匹配追踪法重构信号(本质上是L_1范数最优化问题) m=2*K; % 算法迭代次数(m>=K) Psi=fft(eye(N,N))/sqrt(N); % 傅里叶正变换矩阵 T=Phi*Psi'; % 恢复矩阵(测量矩阵*正交反变换矩阵)64*256 [c,d]=size(T); hat_y=zeros(1,N); % 待重构的谱域(变换域)向量 Aug_t=[]; % 增量矩阵(初始值为空矩阵) r_n=s; % 残差值 for times=1:m; % 迭代次数(有噪声的情况下,该迭代次数为K) for col=1:N; % 恢复矩阵的所有列向量 product(col)=abs(T(:,col)'*r_n); % 恢复矩阵的列向量和残差的投影系数(内积值) end [val,pos]=max(product); % 最大投影系数对应的位置 Aug_t=[Aug_t,T(:,pos)]; % 矩阵扩充 T(:,pos)=zeros(M,1); % 选中的列置零(实质上应该去掉,为了简单我把它置零) aug_y=(Aug_t'*Aug_t)^(-1)*Aug_t'*s; % 最小二乘,使残差最小 r_n=s-Aug_t*aug_y; % 残差 pos_array(times)=pos; % 纪录最大投影系数的位置 end hat_y(pos_array)=aug_y; % 重构的谱域向量 hat_x=real(Psi'*hat_y.'); % 做逆傅里叶变换重构得到时域信号 figure; plot(hat_x) %% 4. 恢复信号和原始信号对比 figure; hold on; plot(hat_x,'k.-') % 重建信号 plot(x,'r') % 原始信号 legend('Recovery','Original') norm(hat_x.'-x)/norm(x) % 重构误差 D1=norm(x)/norm(x-hat_x.'); 10*log(D1) |
3楼2015-07-22 09:35:04












回复此楼