化繁为简——小波变换+Matlab仿真——简单明了通透 1. 小波到底是什么它是一个“显微镜镜头”小波本质上就是一个波形很短的小函数通常震荡几下就归零了。具体公式有很多种小波如 Haar, db4, Mexican Hat。最简单的叫Haar 小波它的公式只有两段ψ(t){1,0≤t0.5−1,0.5≤t10,其他 \psi(t) \begin{cases} 1, 0 \le t 0.5 \\ -1, 0.5 \le t 1 \\ 0, \text{其他} \end{cases}ψ(t)⎩⎨⎧​1,−1,0,​0≤t0.50.5≤t1其他​长这样┌─┐然后立刻└─┘像一个正方形波中间分开。2. 怎么和信号计算滑动窗口 对比求和“局部”相乘求和。就像是拿着手电筒在黑墙上扫。想象你的信号是一串长长的数字序列。小波是一个很短的“尺子”比如只有2个格子的Haar小波[1, -1]。计算步骤如下定位平移bbb把小波对准信号的第1个点。相乘内积把小波覆盖范围内的信号点和小波对应的点一一相乘。求和把这些乘积加起来。得到的这个总和Sum就是在这个位置的小波系数。移动把小波向右挪一格对准第2个点重复上面“相乘、求和”的过程。所以它不是只乘一个点那没法体现波形形状。它也不是一下子乘整个周期那样就只有这一个数没法知道哪一时刻发生了什么。它是每次只乘“小波长度”那么长的一小段信号算出一个系数然后再移到下一段。3. 具体计算举例为什么平滑信号是0阶跃处是大值我们来做一个手算模拟。设定信号假设有一个信号前半段是平稳的值都是2中间突然跳变阶跃后半段变成值都是5。为了方便我们只取6个点来看f[2,2,2,5,5,5] f [2, \quad 2, \quad 2, \quad 5, \quad 5, \quad 5]f[2,2,2,5,5,5]注意在第3个点和第4个点之间发生了从2到5的突变。设定小波用最简单的 Haar 小波省去复杂的归一化系数只看核心逻辑ψ[1,−1] \psi [1, \quad -1]ψ[1,−1]这就意味着左边采样点乘1右边相邻采样点乘-1然后相减。场景 A在平滑区域比如第1、2个点处对准位置小波[1,−1][1, -1][1,−1]盖住信号的第1、2个点[2,2][2, 2][2,2]。相乘第1个点2×122 \times 1 22×12第2个点2×(−1)−22 \times (-1) -22×(−1)−2求和得出系数2(−2)0 2 (-2) 02(−2)0结果系数为0。解释因为信号是平滑的左边2右边也是2小波是“一正一负”的两者完美抵消。这就是消失矩在起作用——对于常数信号Haar小波的积分为0。场景 B在突变边缘比如第3、4个点处这里发生了跳变左边是2右边突然变成5。对准位置小波[1,−1][1, -1][1,−1]正好盖住第3个点2和第4个点5。注意小波是[1,−1][1, -1][1,−1]也就是左边部分是正右边部分是负。相乘第3个点左边2×122 \times 1 22×12第4个点右边5×(−1)−55 \times (-1) -55×(−1)−5求和得出系数2(−5)−3 2 (-5) -32(−5)−3结果系数是-3。解释因为信号突变了左边的2和右边的5不再相等无法抵消。这个“-3”就是大尖峰它告诉我们这里刚刚发生了一个变化场景 C跳变后的平滑区比如第4、5个点处现在小波移到了第4、5个点[5,5][5, 5][5,5]。相乘5×155 \times 1 55×155×(−1)−55 \times (-1) -55×(−1)−5求和5(−5)0 5 (-5) 05(−5)0结果系数又变回0了。解释虽然信号值变大了变成了5但在小波看来这一小段内部依然是“平的”没有变化所以还是输出0。4. 总结这一步计算过程通过这个手算例子可以看到内积相乘求和就是**“比较”**。小波在问信号“这一小段左边和右边一样吗”结果为0如果小波覆盖的这一小段信号是平滑的多项式左边和右边能通过正负抵消结果就是0。结果很大如果小波正好卡在突变处阶跃左边和右边差很多没法抵消就会剩下一个很大的余数比如 -3这就是大尖峰。5. CWT连续小波变换我们在上面做的是离散的一个个点算如果是连续的信号那个公式Wf(a,b)∫f(t)ψ(t−ba)dt W_f(a, b) \int f(t) \psi(\frac{t-b}{a}) dtWf​(a,b)∫f(t)ψ(at−b​)dt翻译成大白话就是ψ(t−ba)\psi(\frac{t-b}{a})ψ(at−b​)把小波ψ\psiψ拉伸aaa控制宽度并平移bbb控制位置到时间点bbb。f(t)×…f(t) \times \dotsf(t)×…把拉伸平移后的小波波形与信号f(t)f(t)f(t)在当前范围内对应点相乘。∫…dt\int \dots dt∫…dt把所有乘积加起来积分就是连续的求和。这和刚才手算[2,2]×[1,−1]0[2, 2] \times [1, -1] 0[2,2]×[1,−1]0的过程是一模一样的只不过一个是手动算6个点电脑可能一秒钟算几百万个点。6. Matlab仿真%% 小波变换本质理解DWT 两两配对、互不重叠% 结论长度 N 的信号经一级 DWT 得到 N/2 个细节 N/2 个近似% 总数仍为 N —— 无冗余才能精确重构。clc;clear;close all;%% 1. 信号与 Haar 分析滤波器与 MATLAB db1一致f[2,2,2,5,5,5];Lo_D[1,1]/sqrt(2);% 近似(平均)两数之和 / sqrt(2)Hi_D[-1,1]/sqrt(2);% 细节(差分)后减前 / sqrt(2)fprintf(matlab里的dwt计算为了能量保持不变做差值或求平均会除以根号2);fprintf(原始信号: );fprintf(%g ,f);fprintf(\n);%% 2. 手动计算两两配对窗口宽2、步长2不重叠nlength(f);npairn/2;% 6 样本 - 3 对cA_manualzeros(1,npair);cD_manualzeros(1,npair);fork1:npair pairf(2*k-1:2*k);% (f1,f2) (f3,f4) (f5,f6)cA_manual(k)sum(pair.*Lo_D);% 加权平均cD_manual(k)sum(pair.*Hi_D);% 加权差分end%% 3. MATLAB 函数对照dwt 本质 滤波器卷积 隔2抽取[cA,cD]dwt(f,db1);% db1 Haarf_recidwt(cA,cD,db1);% 逆变换重构验证recErrmax(abs(f_rec-f));disp(--- 细节系数 cD ---);disp([cD_manual;cD]);disp(--- 近似系数 cA ---);disp([cA_manual;cA]);fprintf(|ΔcD|%.2e, |ΔcA|%.2e\n,...abs(cD_manual-cD),abs(cA_manual-cA));fprintf(idwt 重构误差 %.2e 336 个系数信息零损失\n,recErr);%% 4. 可视化figure(Name,DWT 本质两两配对,NumberTitle,off,Position,[100100850850]);subplot(3,1,1);stem(1:n,f,k,filled);hold on;grid on;xlabel(样本序号);title(原始信号序列);subplot(3,1,2);stem(1:npair,cD_manual,b,filled,LineWidth,1.5);grid on;ylim([-13]);title([手动配对计算的 cD [sprintf(%.4f ,cD_manual)]]);xlabel(配对编号 k \leftrightarrow 样本对 (f_{2k-1}, f_{2k}));subplot(3,1,3);stem(1:npair,cD,r,filled,LineWidth,1.5);grid on;ylim([-13]);title([dwt(db1) 输出的 cD [sprintf( %.4f,cD) ]]);ylim([-31]);xlabel(配对编号 k);说明这里一正一负暴露了 DWT 实现里最容易踩的一个坑卷积会自动把滤波器左右翻转。根源卷积 ≠ 相关MATLAB 的dwt内部是真卷积 隔2抽取cD(k)∑mh~(m) f(2k−m),h~ 是 Hi_D 翻转后的核cD(k) \sum_m \tilde{h}(m)\, f(2k-m), \quad \tilde{h} \text{ 是 } Hi\_D \text{ 翻转后的核}cD(k)m∑​h~(m)f(2k−m),h~是Hi_D翻转后的核而手算是内积相关sum(pair .* Hi_D)滤波器不翻转。两者等效于用了两个互为镜像的滤波器使用的核对配对 (2, 5) 的运算结果手动相关[−1,1]/2[-1, 1]/\sqrt{2}[−1,1]/2​(5−2)/2(5-2)/\sqrt{2}(5−2)/2​2.1213dwt卷积[1,−1]/2[1, -1]/\sqrt{2}[1,−1]/2​翻转后(2−5)/2(2-5)/\sqrt{2}(2−5)/2​−2.1213

相关新闻

最新新闻

从文本到视频:构建多模态深度研究Agent

从文本到视频:构建多模态深度研究Agent

2024 年各大厂商集中发布了 DeepResearch 类产品,用户输入一个问题,Agent 会自动检索网页、阅读文档、交叉验证,最后产出一份带引用的研究报告。这个流程确实惊艳,但仔细观察会发现一个明显边界:绝大多数 DeepResearch…

2026/8/28 5:54:40
蓝桥杯单片机国赛客观题:IAP15F2K61S2系统思维与高频考点解析

蓝桥杯单片机国赛客观题:IAP15F2K61S2系统思维与高频考点解析

1. 从“客观题”到“系统思维”:蓝桥杯国赛的底层逻辑如果你也参加过蓝桥杯单片机的国赛,或者正在备赛的路上,那你一定对“客观题”这个环节不陌生。它通常出现在决赛的开头,几道选择题,分值不高,却往往让不…

2026/8/28 5:54:40
蓝桥杯单片机国赛实战:模块化编程与状态机设计指南

蓝桥杯单片机国赛实战:模块化编程与状态机设计指南

1. 从“省一”到“国奖”:我的第十一届蓝桥杯单片机国赛复盘与实战指南又到了蓝桥杯赛季,看着学弟学妹们开始备赛,我不禁回想起自己参加第十一届蓝桥杯单片机国赛的经历。那场比赛,与其说是一场考试,不如说是一场对综合…

2026/8/28 5:54:40
MATLAB实现综合评价与决策:从TOPSIS、熵权法到实战建模

MATLAB实现综合评价与决策:从TOPSIS、熵权法到实战建模

1. 项目概述:当数学建模遇上综合评价与决策如果你正在准备数学建模竞赛,或者在工作中需要处理多指标、多方案的评估问题,那么“综合评价与决策”这个主题你一定绕不开。这几乎是所有涉及方案比选、绩效评估、风险评估场景的核心。简单来说&am…

2026/8/28 5:54:40
3.5英寸SBC如何承载Ryzen Embedded V1000/R1000?选型与工程实战解析

3.5英寸SBC如何承载Ryzen Embedded V1000/R1000?选型与工程实战解析

最近行业里聊得比较多的一个话题,就是3.5英寸SBC这种小规格板卡,居然也能塞进AMD Ryzen Embedded V1000或者R1000这级别的处理器。以前大家印象里3.5寸板就是低功耗、弱性能的代名词,跑跑串口、带带HMI、做做数据采集也就到头了。但Ryzen Emb…

2026/8/28 5:54:40
林伽一 · AI科技日报 | 2026年08月27日

林伽一 · AI科技日报 | 2026年08月27日

AI基础设施的软件化与规模化,是今日技术圈最清晰的信号:英伟达发布CUDA Python 1.0、Groq 3 LPX进入全面量产,Dynamo推理框架推出影子引擎恢复功能;与此同时,Splunk MCP服务器凭据管理器曝出9.1分远程代码执行漏洞&…

2026/8/28 5:49:40