• 大小: 724B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: Matlab
  • 标签: CSDCT  

资源简介

压缩感知的matlab程序,稀疏矩阵DCT,恢复算法OMP

资源截图

代码片段和文件信息

clear all;
clc;
signal0=wavread(‘M1_263‘);
L=160; %窗长
P=floor(length(signal0)/L); %帧数
% dct_coef=zeros(NP);
signal1=[];
n=L*0.5;
Measurement=[];
for ii=1:P
% ii=10;
x0(ii:)=signal0((ii-1)*L+1:ii*L);
dct_coef0(ii:)=dct(x0(ii:));
%求dctbasis和idctbasis
for kk=2:L
    for nn=1:L
        dctbasis(kknn)=(2/L)^0.5*cos((2*(nn-1)+1)*(kk-1)*pi/2/L);
    end
end
for nn=1:L
    dctbasis(1nn)=(1/L)^0.5*cos((2*(nn-1)+1)*(1-1)*pi/2/L);
end
idctbasis=dctbasis‘;
%%CS重构
N(ii)=L*0.5;
n=N(ii);
guancematrix=randn(nL);  
measurement=guancematrix*x0(ii:)‘;
CSmatrix=guancematrix*idctbasis;
m=L;
c=ones(2*m1);
A=[CSmatrix-CSmatrix];
b=measurement;
lb=zeros(2*m1);
options=optimset(‘LargeScale‘‘off‘‘Simplex‘‘on‘);
[zfvalexitflagoutput]=linprog(c[][]Ablb[][]options);
% output
u=z(1:m1);
v=z(m+1:2*m1);
dct_coef1(ii:)=u-v;
dcterror(ii)=norm(dct_coef0(ii:)-dct_coef1(ii:)1);
x1(ii:)=idctbasis*dct_coef1(ii:)‘;
x_error(ii)=norm(x0(ii:)-x1(ii:)1);
signal1=[signal1x1(ii:)];
end
signal0=signal0(1:P*320);
snr=signal0‘*signal0/((signal0‘-signal1)*(signal0-signal1‘));
snr=10*log10(snr);
signal_error=norm(signal0‘-signal11);
ratio=sum(N)/(L*P);
wavwrite(signal116000‘M1_263_dctcs_csmr05‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1263  2009-03-12 11:35  dct_cs.m

----------- ---------  ---------- -----  ----

                 1263                    1


评论

共有 条评论

相关资源