matlab小波变换代码
时间: 2023-06-28 09:15:13 浏览: 73
下面是一个在MATLAB中进行小波变换的示例代码,使用了MATLAB的Wavelet Toolbox:
```matlab
% 定义信号
t = linspace(0, 1, 1000);
x = 0.5*sin(2*pi*50*t) + sin(2*pi*120*t) + 0.5*sin(2*pi*200*t);
% 进行小波变换
[c, l] = wavedec(x, 3, 'db4');
% 重构小波系数
a3 = wrcoef('a', c, l, 'db4', 3);
d3 = wrcoef('d', c, l, 'db4', 3);
d2 = wrcoef('d', c, l, 'db4', 2);
d1 = wrcoef('d', c, l, 'db4', 1);
% 绘制信号和小波分解结果
figure;
subplot(5,1,1); plot(x); title('原始信号');
subplot(5,1,2); plot(a3); title('第3层低频分量');
subplot(5,1,3); plot(d3); title('第3层高频分量');
subplot(5,1,4); plot(d2); title('第2层高频分量');
subplot(5,1,5); plot(d1); title('第1层高频分量');
```
这段代码首先定义了一个包含三个正弦波的信号,并使用`wavedec`函数进行小波分解,将小波系数存储在`c`中,将每个分量的长度存储在`l`中。然后,使用`wrcoef`函数重构了第3层低频分量和三个高频分量,并绘制了分解结果。