小波信号去噪matlab代码
时间: 2023-10-26 10:08:54 浏览: 133
小波去噪matlab代码
这段代码主要是介绍了如何使用小波包进行信号去噪的过程,其中包括了生成正弦信号并加入高斯白噪声、小波包重构、获取去噪或压缩的默认阈值、计算同一小波系下各阶小波基去噪后的信噪比等步骤。以下是一个简单的小波信号去噪的Matlab代码示例:
clear all; clc; close all;
% 生成正弦信号并加入高斯白噪声
snr=5;%设置信噪比
N=1000;
t=1:N;
y=sin(0.03*t);%生成正弦信号
[s,noise]=Gnoisegen(y,snr);%加高斯白噪声
% 小波包重构
wave='db4'; % 选取小波包基
n=5; % 分解的层数
[C,L]=wavedec(s,n,wave); % 小波分解
thr=wnoiseth('heursure',s); % 获取默认阈值
xdh=wdencmp('gbl',C,L,wave,5,thr,'h'); % 小波包重构
% 计算信噪比
snr_before=snrr(y,s); % 原始信号的信噪比
snr_after=snrr(y,xdh); % 去噪后的信噪比
% 绘制图像
figure(1)
subplot(311); plot(y); xlabel('样本序号'); ylabel('幅值'); title('原始信号');
subplot(312); plot(s); xlabel('样本序号'); ylabel('幅值'); title('加噪信号');
subplot(313); plot(xdh); xlabel('样本序号'); ylabel('幅值'); title('去噪信号');
阅读全文