⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svdexp2.m

📁 SVD去噪
💻 M
字号:
%dmod也可以产生模拟调制信号,见帮助
clear;clc;close all;


%----------------------------FSK信号,数字调制------------------------------------
% 采用SVD去噪效果都调频信号不太好
codes=6;                                %码元个数,即输入调制信号的长度
sigma=1;                                %调制信号的幅度
fs=600e3;                               %采样率600K
fb=1e3;                                 %波特率1KHz,fb表示对输入调制信号的采样率
fc=100e3;                               %载频100KHz
N0=fs/fb;                               %一个码元周期内的采样点数,一个输入信号长度内的采样点数
N=N0*codes;                             %总的采样点数(已调信号的长度)
M=4;                                    %调制方式选择,fsk的M个频率
symbols1=linspace(0,1,M);               %对应的M个频率值
mm=randint(1,codes,[1,M]);
for i=1:codes
    symbols(i)=symbols1(mm(i));         %每个码元随机取指定值 
end
x=sigma*dmod(symbols,fc,fb,fs,'FSK',M);
% ifr=instfreq(x');                     %测试频率
% ttt=3:N;
% stem(ttt,ifr);
%-------------------------加入指定强度的噪声--------------------------------
snr=5;
ps=sum(x.^2)/N;
sigma_noise=abs(sqrt(ps/(10^(snr/10))));
nn=randn(1,N);
enn=sum(nn)/N;                          %随机数nn的均值
nn=nn-enn;                              %使nn均值为0 
noise=sigma_noise*nn;
s=x+noise;
%-------------------------原始信号信噪比及均方差分析-----------------
snrs=20*log10(norm(x)/norm(s-x));
mmses=mmse(s-x);
%-----------------------分解层数及构成分解矩阵------------------------

% % ---------------------------矩阵均匀分段------------------------
M=N0/10;                              %矩阵行数,N0=1000
N1=N/M;                               %矩阵列数
for i=1:M
    a(i,:)=s(((i-1)*N1+1):(i*N1));
end
% -------------------------------信号svd分解及重构------------------------------
MM=2;                                 %特征值个数为MM-1
[u,s1,v]=svd(a);
s2=zeros(M,N1);
for i=MM:M
    s2(i,:)=s1(i,:);
end
s3=s1-s2;
%信号重构
anew=u*s3*v';
for i=1:M
    ys(((i-1)*N1+1):(i*N1))=anew(i,:);
end
%----------------------SVD去噪后,信噪比及均方差分析--------------------------------
snry=20*log10(norm(x)/norm(ys-x))
mmses
mmsey=mmse(ys-x)
subplot(311);plot(x); title('纯净信号');
subplot(312);plot(s); title('含噪信号');
subplot(313);plot(ys);title('SVD去噪后信号');
% %-------------------------------SVD去噪后信号进行小波去噪----------------------------------
% %效果不好,信噪比及均方差提高的幅度不大
% yout=wden(sy,'rigrsure','s','sln',6,'db7');
% %-------------------------------小波去噪后信号信噪比及均方差分析--------------------------
% snryout=20*log10(norm(x)/norm(yout-x))
% mmseyout=mmse(yout-x)
% figure,
% subplot(311);plot(x); title('纯净信号');
% subplot(312);plot(s); title('含噪信号');
% subplot(313);plot(yout);title('SVD及小波去噪后信号');
% %两种方法误差分析
% figure,
% subplot(211);plot(yout-x);title('SVD后采用小波');
% subplot(212);plot(sy-x);title('SVD');


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -