clc
clear all;
clf ;
close all;
%%
%%原始信号图像
NT=501;
NX=100;
dt=0.001;
f0=30;
t=[0:NT-1]*dt;
a=pi*f0*(t-0.25);
sss=(1-2*a.^2).*exp(-a.^2);
figure(1);
plot(sss);
for(i=1:NX)
sss=circshift(sss,[0,1]);
F(:,i)=sss';
end
figure(2);
Wigb(F);
%%
%%有噪声的图像
noise=randn(NT,NX)*0.1;
Fhe=F+noise;
figure(3)
wigb(Fhe);
%%
% %%svd 还原
% A=[1,2,3,4,5;2,3,4,5,6;3,4,5,6,7];
% [u,ss,v]=svd(A);
[u,s,v]=svd(Fhe);
S=diag(s);
S1=S/S(1);
figure(4)
stem(S1,'k');
M=14;%%选择保留特征值的个数;
s(s < s(M,M)) = 0;
Fhuan=u*s*v';
figure(5)
wigb(Fhuan);
%%
%误差绝对值分析
ee=abs(Fhe-Fhuan);
figure(6)
wigb(ee);
%Project:
Calculates the PSNR (Peak Signal to Noise Ratio)
% of images A and A', both of size MxN
function [A] = psnr(base,result)
% convert to doubles
% base=double(base);
% result=double(result);
[M,N]=size(base);
b_base=block_im(base,8);
b_result=block_im(result,8);
for i=1:8
for j=1:8
%
m_base(i,j)=max(max(double(b_base{i,j}).^2));
m_base(i,j)=max(max(im2double(b_base{i,j}).^2));
end
end
% psnr_num=double(M*N*max(m_base(:)));
psnr_num=M*N*max(m_base(:));
for i=1:8
for j=1:8
%
s_dif(i,j)=sum(sum(double(b_dif{i,j}).^2));
s_dif(i,j)=sum(sum(double(im2double(b_base{i,j})-im2double(b_result{i,j})
).^2));
end
end
% psnr_den=double(sum(s_dif(:)));
psnr_den=sum(s_dif(:));
% psnr_num=M*N*max(max(base.^2)); % calculate numerator 用信号功
率最大值乘以象素点个数)); % calculate den
% psnr_den=sum(sum((base-result).^2ominator 噪声的功率之和
A=10*log10(psnr_num/psnr_den); % calculate PSNR