小波滤波matlab
时间: 2023-07-22 08:03:50 浏览: 105
小波滤波是一种数字信号处理方法,可以用于去除信号中的噪声。在 MATLAB 中,可以使用 Wavelet Toolbox 来实现小波滤波。
以下是一个简单的小波滤波示例代码:
```matlab
% 生成测试信号
t = linspace(0, 1, 1000);
x = sin(2*pi*50*t) + sin(2*pi*120*t);
% 加入高斯噪声
y = x + 2*randn(size(t));
% 小波滤波
wname = 'db4';
level = 6;
[C, L] = wavedec(y, level, wname);
thr = wthrmngr('dw2dcomp', 'threshold', C, L, 2);
S = wthrmngr('dw2dcomp', 'sqtwolog', C, L);
xd = wdencmp('gbl', C, L, wname, level, thr, S);
% 绘制结果
subplot(3,1,1)
plot(t, x)
title('原始信号')
subplot(3,1,2)
plot(t, y)
title('加噪信号')
subplot(3,1,3)
plot(t, xd)
title('小波滤波后的信号')
```
在这个示例中,首先生成了一个包含两个正弦波的测试信号,并加入了高斯噪声。然后使用 `wavedec` 函数对信号进行小波分解,得到分解系数 `C` 和长度向量 `L`。接着使用 `wthrmngr` 函数计算阈值和小波压缩系数。最后使用 `wdencmp` 函数对信号进行小波重构,得到滤波后的信号 `xd`。
运行代码后,会生成一个包含三个子图的图像,分别显示原始信号、加噪信号和小波滤波后的信号。可以看到,小波滤波后的信号已经去除了大部分噪声。
阅读全文