基于MATLAB实现的信号小波分解和重构

简介: 实现信号的小波分解和重构

基于MATLAB实现的信号小波分解和重构

1. 一维小波分解和重构

% 生成测试信号
t = linspace(0, 1, 1024);
signal = sin(2 * pi * 50 * t) + 0.5 * sin(2 * pi * 120 * t) + randn(size(t)) * 0.2;

% 小波分解
waveletName = 'sym4'; % 选择小波基函数
[cA, cD] = dwt(signal, waveletName); % 一维离散小波变换

% 小波重构
reconstructedSignal = idwt(cA, cD, waveletName); % 一维离散小波反变换

% 显示结果
figure;
subplot(3, 1, 1);
plot(t, signal);
title('Original Signal');
xlabel('Time');
ylabel('Amplitude');

subplot(3, 1, 2);
plot(t, cA);
title('Approximation Coefficients');
xlabel('Time');
ylabel('Amplitude');

subplot(3, 1, 3);
plot(t, reconstructedSignal);
title('Reconstructed Signal');
xlabel('Time');
ylabel('Amplitude');

2. 二维小波分解和重构

% 生成测试图像
[X, Y] = meshgrid(1:128, 1:128);
image = sin(X / 10) + cos(Y / 10) + randn(size(X)) * 0.1;

% 小波分解
waveletName = 'sym4'; % 选择小波基函数
[C, S] = wavedec2(image, 2, waveletName); % 二维多层小波分解

% 提取各层细节分量
[appCoefs, detCoefs] = detcoef2('all', C, S, 2); % 提取所有细节分量

% 小波重构
reconstructedImage = waverec2(C, S, waveletName); % 二维多层小波重构

% 显示结果
figure;
subplot(2, 2, 1);
imagesc(image);
title('Original Image');
colormap('gray');

subplot(2, 2, 2);
imagesc(appCoefs);
title('Approximation Coefficients');
colormap('gray');

subplot(2, 2, 3);
imagesc(detCoefs(:,:,1));
title('Horizontal Detail Coefficients');
colormap('gray');

subplot(2, 2, 4);
imagesc(reconstructedImage);
title('Reconstructed Image');
colormap('gray');

说明

  1. 一维小波分解和重构

    • 使用dwt函数进行一维离散小波分解,得到近似分量cA和细节分量cD
    • 使用idwt函数进行一维离散小波反变换,重构原始信号。
    • 显示原始信号、近似分量和重构信号的波形图。
  2. 二维小波分解和重构

    • 使用wavedec2函数进行二维多层小波分解,得到多层分解的系数矩阵C和尺寸矩阵S
    • 使用detcoef2函数提取各层细节分量。
    • 使用waverec2函数进行二维多层小波重构,重构原始图像。
    • 显示原始图像、近似分量、细节分量和重构图像的灰度图。

参考代码 实现信号的小波分解和重构 youwenfan.com/contentalc/82096.html

相关文章
|
并行计算 算法 计算机视觉
【MATLAB 】 EMD信号分解+模糊熵(近似熵)算法
【MATLAB 】 EMD信号分解+模糊熵(近似熵)算法
390 0
|
并行计算 算法 计算机视觉
【MATLAB 】 EEMD 信号分解+模糊熵(近似熵)算法
【MATLAB 】 EEMD 信号分解+模糊熵(近似熵)算法
497 0
|
并行计算 算法 计算机视觉
【MATLAB 】 CEEMD 信号分解+模糊熵(近似熵)算法
【MATLAB 】 CEEMD 信号分解+模糊熵(近似熵)算法
447 0
|
并行计算 算法 计算机视觉
【MATLAB 】 CEEMDAN 信号分解+模糊熵(近似熵)算法
【MATLAB 】 CEEMDAN 信号分解+模糊熵(近似熵)算法
716 0
|
4月前
|
机器学习/深度学习 数据采集 算法
【VMD-SSA-LSSVM】基于变分模态分解与麻雀优化Lssvm的负荷预测【多变量】(Matlab代码实现)
【VMD-SSA-LSSVM】基于变分模态分解与麻雀优化Lssvm的负荷预测【多变量】(Matlab代码实现)
117 0
|
3月前
|
算法
【电力系统潮流】5节点系统潮流计算-牛拉法和PQ分解法(Matlab代代码实现)
【电力系统潮流】5节点系统潮流计算-牛拉法和PQ分解法(Matlab代代码实现)
382 3
|
4月前
|
存储 并行计算 算法
【图像压缩】在 MATLAB 中使用奇异值分解 (SVD) 进行图像压缩(Matlab代码实现)
【图像压缩】在 MATLAB 中使用奇异值分解 (SVD) 进行图像压缩(Matlab代码实现)
314 3
|
3月前
|
机器学习/深度学习 存储 算法
基于广义benders分解法的综合能源系统优化规划(Matlab代码实现)
基于广义benders分解法的综合能源系统优化规划(Matlab代码实现)
109 0
|
4月前
|
机器学习/深度学习 编解码 运维
数据驱动的自适应线性调频模式分解研究(Matlab代码实现)
数据驱动的自适应线性调频模式分解研究(Matlab代码实现)
|
4月前
|
机器学习/深度学习 算法 Python
基于ADMM的车辆路径问题与时间窗口(VRPTW)的问题分解方案(Matlab代码实现)
基于ADMM的车辆路径问题与时间窗口(VRPTW)的问题分解方案(Matlab代码实现)
119 0

热门文章

最新文章