matlab生成一个含噪声的信号利用不同的db小波基去噪对比他们的信噪比均方根误差和相关系数显示在折线图中
时间: 2024-02-05 20:13:28 浏览: 70
以下是一个简单的 MATLAB 代码,可以根据您的要求生成含噪信号并对其进行小波去噪,并比较它们的信噪比、均方根误差和相关系数。代码中使用了 Daubechies 4 小波基。
```matlab
% 生成含噪信号
t = 0:0.001:1;
x = sin(2*pi*50*t) + sin(2*pi*120*t);
noise = 0.5*randn(size(t));
y = x + noise;
% 小波去噪
wname = 'db4';
level = 4;
[C, L] = wavedec(y, level, wname);
thr = wthrmngr('dw2ddenoLVL','penalhi',C,L);
sorh = 's';
xd = wdencmp('gbl',C,L,wname,level,thr,sorh);
% 计算指标
SNR = snr(x, noise);
SNR_denoised = snr(x, x - xd);
RMSE = sqrt(mean((x - xd).^2));
corr = corrcoef(x, xd);
% 绘图
figure;
subplot(2,2,1);
plot(t, x);
title('原始信号');
subplot(2,2,2);
plot(t, y);
title('含噪信号');
subplot(2,2,3);
plot(t, xd);
title('去噪信号');
subplot(2,2,4);
plot([SNR, SNR_denoised, RMSE, corr(1,2)]);
title('指标比较');
xticklabels({'SNR', 'SNR_denoised', 'RMSE', 'corr'});
```
请注意,这只是一个简单的示例,您可以根据需要进行更改和修改。
阅读全文