如何使用MATLAB进行小波变换分析

news/2026/1/16 21:33:22/文章来源:https://www.cnblogs.com/chengdr/p/19494122

小波变换是比FFT、PSD更灵活的时频分析工具——既能像FFT一样看清信号的频率成分,又能定位频率出现的时间位置,特别适合分析非平稳信号(如故障振动、语音、心电信号)。MATLAB的Wavelet Toolbox提供了从基础小波分解到可视化的全套函数,本文从原理到实战,手把手教你落地小波变换分析,代码可直接复制运行。

一、核心前提:理解小波变换的优势

1.1 小波变换vs傅里叶变换(FFT)

分析方法 核心特点 适用场景
傅里叶变换(FFT) 仅能看“频率分布”,丢失时间信息 平稳信号(如纯正弦波)
小波变换 同时看“时间-频率”分布(时频分析) 非平稳信号(如故障冲击、调频信号)

举个例子:电机正常运行时振动是50Hz平稳信号(FFT够用),但轴承故障时会出现“某一时刻的高频冲击信号”——只有小波变换能精准定位“冲击发生的时间+冲击的频率”。

1.2 无需额外配置

MATLAB默认安装Wavelet Toolbox,核心函数(wavedeccwtwenergy)直接可用,无需额外安装。

二、基础用法:2类核心小波变换(离散/连续)

小波变换分离散小波变换(DWT)连续小波变换(CWT),前者适合信号分解/特征提取,后者适合时频可视化,是工程中最常用的两种方式。

2.1 离散小波变换(DWT):信号分解与重构

核心目标

将信号分解为“低频近似分量(A)”和“高频细节分量(D)”,比如从含噪信号中提取低频有效信号,或提取高频故障特征。

完整代码(可直接运行)

%% 步骤1:生成含噪非平稳信号(模拟故障冲击)
Fs = 1000;                % 采样频率1000Hz
t = 0:1/Fs:2-1/Fs;        % 时间轴:0~2秒
% 基础信号:50Hz正弦波 + 1秒处的高频冲击(故障特征)
x = sin(2*pi*50*t) + 0.5*randn(size(t));  % 50Hz信号+噪声
x(1000:1050) = x(1000:1050) + 3*sin(2*pi*500*t(1000:1050)); % 1秒处叠加500Hz冲击% 可视化原始信号
figure(1)
plot(t, x)
title('含故障冲击的非平稳信号')
xlabel('时间 t (s)')
ylabel('幅值')
grid on;
xlim([0 2]);%% 步骤2:离散小波分解(db4小波,分解3层)
wname = 'db4';  % 小波基(db4是工程常用的小波,适合冲击信号)
level = 3;      % 分解层数(层数越多,频率分辨率越高)
[C, L] = wavedec(x, level, wname);  % C:分解系数;L:系数长度%% 步骤3:提取各层分量
% 近似分量(低频):A3(3层分解后的低频)
A3 = appcoef(C, L, wname, level);
% 细节分量(高频):D3、D2、D1(层数越高,频率越低)
D3 = detcoef(C, L, 3);
D2 = detcoef(C, L, 2);
D1 = detcoef(C, L, 1);%% 步骤4:可视化分解结果
figure(2)
subplot(5,1,1); plot(t, x); title('原始信号'); ylabel('幅值'); grid on;
% 注意:分解后的分量长度需插值还原到原长度
t_A = linspace(0, 2, length(A3));
subplot(5,1,2); plot(t_A, A3); title('A3:3层近似分量(低频)'); ylabel('幅值'); grid on;
t_D3 = linspace(0, 2, length(D3));
subplot(5,1,3); plot(t_D3, D3); title('D3:3层细节分量'); ylabel('幅值'); grid on;
t_D2 = linspace(0, 2, length(D2));
subplot(5,1,4); plot(t_D2, D2); title('D2:2层细节分量'); ylabel('幅值'); grid on;
t_D1 = linspace(0, 2, length(D1));
subplot(5,1,5); plot(t_D1, D1); title('D1:1层细节分量(高频)'); ylabel('幅值'); xlabel('时间 t (s)'); grid on;%% 步骤5:信号重构(从分解系数还原信号)
% 重构3层近似分量(去除高频噪声)
x_recon = waverec(C, L, wname);  
figure(3)
plot(t, x, 'b', t, x_recon, 'r');
title('原始信号 vs 小波重构信号(去噪后)');
xlabel('时间 t (s)'); ylabel('幅值');
legend('原始信号','重构信号'); grid on;

关键知识点解读

  1. 小波基选择
    • db4(Daubechies小波):适合机械振动、故障冲击信号;
    • sym8:适合平滑信号(如音频);
    • morl(墨西哥帽小波):适合连续小波变换的时频分析。
  2. 分解层数
    • 层数越高,低频分量(A)的频率分辨率越高,但时间分辨率越低;
    • 工程中常用3~5层,可根据信号长度调整(采样点数越多,层数可越高)。
  3. 结果解读
    • A3(近似分量):保留了50Hz低频基础信号,过滤了噪声和高频冲击;
    • D1(细节分量):清晰显示1秒处的500Hz高频冲击(故障特征),这是FFT无法定位的。

2.2 连续小波变换(CWT):时频可视化(核心实战)

核心目标

生成“时间-尺度(频率)-幅值”的时频图,直观看到不同频率成分在时间轴上的分布,是小波变换最常用的可视化方式。

完整代码(可直接运行)

%% 步骤1:生成调频信号(频率从20Hz→80Hz,非平稳)
Fs = 1000;
t = 0:1/Fs:5-1/Fs;
x = chirp(t, 20, max(t), 80) + 0.2*randn(size(t)); % 线性调频+噪声%% 步骤2:连续小波变换(CWT)
wname = 'morl';  % 墨西哥帽小波,适合时频分析
% 调用cwt函数,返回小波系数和频率轴
[wt, f] = cwt(x, wname, Fs);  % wt:小波系数(复数);f:频率轴%% 步骤3:可视化时频图(核心)
figure(4)
% 绘制时频图(颜色越深,该时间-频率点的幅值越大)
imagesc(t, f, abs(wt));  
colormap jet;  % 配色方案(jet是时频图常用配色)
colorbar;      % 颜色刻度条(对应幅值大小)
title('连续小波变换时频图(调频信号)');
xlabel('时间 t (s)');
ylabel('频率 f (Hz)');
ylim([0 100]); % 聚焦0~100Hz,匹配信号频率范围%% 步骤4:提取关键频率的时间分布(进阶)
% 提取80Hz频率对应的小波系数,看时间分布
f_target = 80;
[~, idx] = min(abs(f - f_target)); % 找到80Hz对应的索引
wt_80 = abs(wt(idx, :));figure(5)
plot(t, wt_80);
title('80Hz频率分量的时间分布');
xlabel('时间 t (s)');
ylabel('幅值');
grid on;

结果解读

  • 时频图中能清晰看到一条从20Hz(t=0)到80Hz(t=5s)的斜线,精准对应调频信号的频率变化;
  • 对比FFT只能看到“20~80Hz的频率范围”,小波变换能同时看到“频率随时间的变化轨迹”,这是核心优势。

三、工程实战:小波变换提取故障特征(轴承振动信号)

需求

从轴承振动信号中提取故障冲击特征(高频冲击+时间定位),这是工业设备故障诊断的典型场景。

核心代码

%% 步骤1:模拟轴承故障振动信号(含工频+故障冲击)
Fs = 2000;
t = 0:1/Fs:1-1/Fs;
% 50Hz工频信号 + 随机噪声 + 周期性故障冲击(0.2/0.4/0.6/0.8秒处)
x = 1.5*sin(2*pi*50*t) + 0.3*randn(size(t));
冲击位置 = round([0.2,0.4,0.6,0.8]*Fs);
for i = 1:length(冲击位置)x(冲击位置(i)-5:冲击位置(i)+5) = x(冲击位置(i)-5:冲击位置(i)+5) + 2*sin(2*pi*1000*t(冲击位置(i)-5:冲击位置(i)+5));
end%% 步骤2:连续小波变换分析
[wt, f] = cwt(x, 'morl', Fs);%% 步骤3:可视化故障特征
figure(6)
subplot(2,1,1); plot(t, x); title('轴承故障振动信号'); xlabel('时间 s'); ylabel('幅值'); grid on;
subplot(2,1,2); imagesc(t, f, abs(wt)); colormap jet; colorbar;
title('小波变换时频图(故障冲击定位)');
xlabel('时间 s'); ylabel('频率 Hz');
ylim([0 1200]); % 聚焦故障冲击的1000Hz频率

结果解读

时频图中能清晰看到0.2/0.4/0.6/0.8秒处的1000Hz高频冲击峰值,精准定位故障发生的时间和频率,这是PSD、FFT无法实现的。

四、常见坑与避坑技巧

4.1 小波基选择错误,特征提取不明显

  • 问题:用sym8分析冲击信号,或用db4分析平滑音频信号;
  • 解决:按信号类型选小波基(冲击信号选db4/db6,平滑信号选sym8,时频分析选morl)。

4.2 分解层数过高/过低

  • 问题:层数过低(❤️)频率分辨率不足,层数过高(>8)计算量大且易失真;
  • 解决:采样点数<1000时选34层,100010000时选5~6层。

4.3 时频图频率轴混乱

  • 问题:未指定采样频率Fscwt返回尺度而非频率;
  • 解决:调用cwt时必须指定Fs(如[wt, f] = cwt(x, 'morl', Fs)),直接返回频率轴f

4.4 小波系数幅值解读错误

  • 注意:小波系数的幅值是相对值,需结合wenergy函数计算各层能量占比,而非直接对比幅值;
    % 计算各层细节分量的能量占比
    [energy, ~] = wenergy(C, L);
    fprintf('D1能量占比:%.2f%%\n', energy(1)*100);
    fprintf('D2能量占比:%.2f%%\n', energy(2)*100);
    fprintf('A3能量占比:%.2f%%\n', energy(end)*100);
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1170045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026最新产业振兴服务推荐!农业特色产业/农产品/地理标志农产品品牌建设权威指南发布,专业咨询助力乡村振兴高质量发展 - 品牌推荐2026

引言 随着乡村振兴战略深入推进,农业特色产业发展进入品牌化竞争新阶段,地理标志农产品已成为区域经济增长的重要引擎。据农业农村部最新数据显示,全国地理标志农产品数量已突破3500个,但品牌化率不足40%,存在同质…

提示工程架构师如何平衡功能丰富度和界面简洁性?

提示工程的“天平术”&#xff1a;如何在功能爆炸与界面极简间走钢丝&#xff1f; 关键词 提示工程、功能丰富度、界面简洁性、用户认知负荷、渐进式Disclosure、模块化设计、智能默认值 摘要 当AI应用的提示功能从“工具箱”变成“军火库”&#xff0c;用户面对满屏的参数滑块…

计算机常用快捷键

计算机常用快捷键Ctrl + C :复制 Ctrl + V :粘贴 Ctrl + A :全选 Ctrl + X :剪切 Ctrl + Z :撤回 Ctrl + S :保存 Alt + F4 :关闭窗口 (如果你的电脑是笔记本电脑的话,可以看看键盘上有没有 Fn 这个按键,有就…

nuxt安装出现certificate 错误

nuxt安装出现certificate 错误 错误内容如下: [admin@main online2]$ npm install --legacy-peer-deps npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://cdn.npm.taobao.org/nuxt failed, reason: certificate has expired n…

无线网络仿真:Wi-Fi网络仿真_(12).高级仿真技术与优化

高级仿真技术与优化 在无线网络仿真中&#xff0c;高级仿真技术与优化是提升仿真精度和效率的关键。本节将详细介绍几种常用的高级仿真技术及其优化方法&#xff0c;包括动态仿真、分布式仿真、并行仿真、高精度仿真和参数优化。通过这些技术&#xff0c;可以更真实地模拟Wi-Fi…

C语言开发从入门到精通:C语言的起源与核心价值

C语言开发从入门到精通&#xff1a;第1讲 C语言的起源与核心价值&#xff08;2026视角&#xff09; 一、C语言的诞生故事&#xff08;非常简短版&#xff09; 时间线事件重要人物/机构1969~1970UNIX操作系统诞生&#xff08;用汇编写&#xff09;Ken Thompson1971~1972Thomps…

无线网络仿真:Wi-Fi网络仿真_(13).无线网络仿真中的问题解决技巧

无线网络仿真中的问题解决技巧 1. 仿真环境配置问题 在进行无线网络仿真时&#xff0c;配置仿真的环境是一个关键步骤。不正确的配置可能导致仿真结果不准确或仿真过程出现错误。以下是一些常见的配置问题及其解决技巧&#xff1a; 1.1 仿真工具选择 问题描述&#xff1a;选择合…

网络原理-HTTP/HTTPS

网络原理 - HTTP 与 HTTPS 完整对比与核心知识点 &#xff08;2026年最新视角&#xff0c;面试/实战高频总结&#xff09; 一、HTTP 与 HTTPS 核心对比表&#xff08;强烈建议背诵&#xff09; 对比项HTTPHTTPS实际影响&#xff08;2025-2026&#xff09;全称HyperText Trans…

2026最新区域公共品牌服务推荐!畜牧业/区域特色农业权威规划机构榜单发布,助力中国农业品牌化升级 - 品牌推荐2026

引言 随着乡村振兴战略深入推进,中国农业正加速从“产品输出”向“品牌输出”转型,畜牧业与区域特色农业的品牌化建设成为提升产业价值、增强市场竞争力的核心抓手。据农业农村部最新数据显示,全国已登记地理标志农…

MySQL知识汇总:讲一讲MySQL中Select语句的执行顺序

MySQL 中 SELECT 语句的逻辑执行顺序 &#xff08;非常重要且经常被问到的高频知识点&#xff09; MySQL 的 SELECT 语句书写顺序和实际执行顺序是完全不同的&#xff0c;这是很多人在理解 SQL 执行过程时最容易混淆的地方。 书写顺序&#xff08;我们平时怎么写的&#xff0…

2026最新农业名牌访谈录推荐!国内畜牧业/区域特色农业权威访谈机构榜单发布,深度解析产业发展助力品牌升级 - 品牌推荐2026

引言 随着乡村振兴战略深入推进,农产品品牌化已成为提升产业价值、促进农民增收的核心路径。据农业农村部最新数据显示,全国农产品区域公用品牌数量已超3000个,但具备市场竞争力的头部品牌占比不足15%,品牌同质化、…

Linux内核TCP网络模块深度分析

Linux 内核 TCP 网络模块深度分析&#xff08;2026 年视角&#xff09; 在 2026 年&#xff0c;Linux 内核&#xff08;主流版本 6.8~7.x&#xff09;中的 TCP 模块仍是网络栈的核心&#xff0c;负责可靠的、面向连接的传输层协议实现。它高度优化&#xff0c;支持高并发、低延…

【图像融合】基于matlab GUI小波变换红外和可见光图像融合(含评价指标)【含Matlab源码 14958期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

2026最新农产品区域公用品牌服务推荐!中国农业特色产业/区域特色农业/地理标志农产品权威服务机构榜单发布,助力农业品牌高质量发展 - 品牌推荐2026

引言 随着乡村振兴战略深入推进,农业特色产业已成为县域经济增长的核心引擎,农产品区域公用品牌作为连接小农户与大市场的关键纽带,其建设水平直接关系产业链价值提升与农民增收实效。据农业农村部市场与信息化司最…

《Spring核心机制》第六篇:一篇读懂SPI

《Spring核心机制》第六篇&#xff1a;一篇读懂 SPI 在 Spring 生态中&#xff0c;经常听到一句话&#xff1a; “Spring 之所以强大&#xff0c;很大程度上是因为它把扩展点做得非常彻底&#xff0c;而这些扩展点绝大多数都是通过 SPI 机制来实现的。” 今天我们就来彻底搞清…

ACP:1.让 AI 工具配置与能力管理,真正走向体系化

ACP:让 AI 工具配置与能力管理,真正走向体系化 如果你已经把 AI 编程工具当成了日常生产力的一部分,那么你大概率遇到过这样一种情况:这个项目里,Agent 角色是为某个工具单独调的 Prompt 模板在不同 IDE 之间来回…

【图像融合】基于matlab高分辨率全色图IHS图像融合(含评价指标)【含Matlab源码 14959期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

时间序列因果推断:顶会发文的 “黄金赛道”,新手也能上手

时间序列因果推断是当前机器学习与统计学交叉领域的热点方向&#xff0c;在 ICML、NeurIPS、ICLR、KDD、AAAI 等顶会中发文量持续攀升&#xff0c;对新手友好且创新空间大&#xff0c;整体属于 “好发论文” 的领域&#xff0c;核心原因如下&#xff1a;一、为什么 “好发”&am…

测试用例管理怎么做度量?6个指标思路和工具对比

本文将深入对比6款测试用例管理工具&#xff1a;PingCode、Worktile、Tricentis qTest、Azure DevOps Test Plans、Zephyr Scale、Xray。一、测试用例管理为什么会变成“质量瓶颈”很多团队的测试用例管理&#xff0c;最初看起来都不难&#xff1a;几份文档、一个表格&#xff…

深入了解 Python 中的 Scrapy:强大的网络爬虫框架

什么是 Scrapy&#xff1f; Scrapy 是一个基于 Python 的高级网络爬虫框架&#xff0c;专门用于从网页中抓取数据&#xff08;也称为“网络抓取”或“网页采集”&#xff09;。它最初由 Scrapinghub 公司开发并开源&#xff0c;现已成为 Python 社区中最广泛使用的爬虫框架之一…