
Matlab小波变换的代码。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
f1设定为50; % 设置第一个频率。
f2设定为100; % 设置第二个频率。
fs定义为2*(f1+f2); % 定义采样频率。
Ts计算为1/fs; % 计算采样间隔。
N设置为120; % 设定采样点数。
n生成从1到N的序列; % 创建一个从1到采样点数N的序列。
y计算为sin(2*pi*f1*n*Ts) + sin(2*pi*f2*n*Ts); % 计算混合的正弦波信号。
图像显示第一个信号图,标题为“两个正弦信号”。
图像显示第二个信号频谱图,标题为“两信号频谱”。
随后,进行小波滤波器谱分析:
h计算为wfilters(db30,l); % 使用db30阈值对小波l进行低通滤波。
g计算为wfilters(db30,h); % 使用db30阈值对小波h进行高通滤波。
h扩展为h连接零,长度变为N,以增加分辨率和观察效果。
g扩展为g连接零,长度变为N,以增加分辨率和观察效果。
图像显示低通滤波器图,标题为“低通滤波器图”。
图像显示高通滤波器图,标题为“高通滤波器图”。
接下来,执行MALLET分解算法(基于快速傅里叶变换的圆周卷积实现):
sig1计算为ifft(fft(y).*fft(h)); % 低通分量:对混合正弦波信号y和低通滤波器h进行FFT后逆变换。
sig2计算为ifft(fft(y).*fft(g)); % 高通分量:对混合正弦波信号y和高通滤波器g进行FFT后逆变换。
图像显示分解后的信号图,其中第一个子图展示了sig1(分解信号1),第二个子图展示了sig2(分解信号2)。
图像显示分解后的频谱图,第一个子图展示了sig1的频谱,第二个子图展示了sig2的频谱。
然后是MALLET重构算法:
sig1通过dyaddown提取低频分量;
sig2通过dyaddown提取高频分量;
h扩展为一个包含零的低通滤波器,长度变为N;
g扩展为一个包含零的高通滤波器,长度变为N;
图像显示低通滤波器图,标题为“低通滤波器图”。 图像显示高通滤波器图,标题为“高通滤波器图”。
hr重建低通滤波器的系数(反转并移动); gr重建高通滤波器的系数(反转并移动)。 hr和gr通过圆周移位调整位置以适应圆周卷积的要求. sig1通过ifft(fft(hr).*fft(sig1))恢复低频分量. sig2通过ifft(fft(gr).*fft(sig2))恢复高频分量. sig是源信号的重构版本.
最后是比较: 图像显示重构后的低频信号及其频谱, 标题分别为 “重构低频信号” 和 “重构低频信号频谱”。 图像显示重构后的高频信号及其频谱, 标题分别为 “重构高频信号” 和 “重构高频信号频谱”。 绘制原始信号与重构信号的叠加曲线, 并添加 legend 和标题 重构信号与原始信号比较。
f1设定为50; % 设置第一个频率。 f2设定为100; % 设置第二个频率. fs定义为 2*(f1+f2);% 定义采样频率. Ts计算 为 1/fs;% 计算采样间隔. N设置为 120;% 设定采样点数. n生成从 1 到 N 的序列;% 创建一个从 1 到采样点数 N 的序列. y计算 为 sin (2 * pi * f1 * n * Ts) + sin (2 * pi * f2 * n * Ts);% 计算混合的正弦波信号. 图像显示第一个信号图, 标题 为 “两个正弦信号”。 图像显示第二个 signal 图谱, 标题 为 “两 signal 图谱”.
全部评论 (0)


