以机械振动信号为例,经过预处理后进入多级分解过程。第一进行参数初始化,设置分解深度和尺度级别,确保参数有效性。接着加载振动信号并进行归一化处理,消除幅度影响。随后进入核心阶段,生成高斯窗小波滤波器组,这些滤波器按指数衰减的尺度分布,形成覆盖不同频率带的滤波器组。完成滤波器可视化后,开始散射变换计算:原始信号第一经过小波滤波和模运算,提取第一阶特征;这些特征再经过下一级小波滤波和模运算,形成第二阶特征;此过程递归进行直至设定深度。每阶变换后,通过低通滤波提取尺度特征,同时保留中间路径信息。所有路径的特征经过格式化整理为二维矩阵,最终通过热力图可视化展示。整个流程形成树状分解结构,从原始信号出发,经过多级滤波-取模-下采样操作,逐步提取具有平移不变性的分层特征,最终输出包含时频特性的系数矩阵,为机械故障诊断提供特征支持。
主要步骤包括:初始化参数并验证有效性;加载振动信号并归一化;生成多尺度小波滤波器组;可视化滤波器特性;执行多阶散射变换计算,每级包含小波滤波、模运算和路径管理;格式化输出特征矩阵;通过热力图可视化全阶数散射系数。系统通过这种层级分解,将原始振动信号转化为具有物理意义的多尺度特征表明,特别适合捕捉机械振动中的冲击特性和共振模式。
clc; clear all % 清空命令窗口和工作区
addpath('lib'); % 添加自定义函数库路径
%% 参数设置
M = 2; % 散射变换阶数(深度)
J = 11; % 最大尺度级别(分解层数)
%% 加载音频并进行零填充
% 调用自定义函数加载音频文件
[sig, N, len] = nanoscat_load('samples/drum1_90.wav');
% 信号归一化(能量归一)
sig = sig / norm(sig);
% 验证尺度参数有效性(确保J小于log2(信号长度))
assert(J < log2(N));
%% 计算滤波器组
% 调用自定义函数生成小波滤波器组
% 参数:信号长度N,尺度级别J,滤波器类型'gaussian'
[psi, phi, lp] = nanoscat_make_filters(N, J, 'gaussian');
%% 绘制滤波器
% 调用自定义函数可视化滤波器组
nanoscat_display_filters(psi, phi, lp);
%% 计算散射变换
% 执行核心散射变换计算
% 输入:信号sig,小波滤波器psi,低通滤波器phi,阶数M
% 输出:散射系数S,中间路径U
[S, U] = nanoscat_compute(sig, psi, phi, M);
%% 格式化并绘制S系数
% 将散射系数转换为矩阵格式
% 参数:散射系数S,阶数范围[1:M+1]
scat = nanoscat_format(S, [1:M+1]); % 创建包含所有系数的矩阵
% 可视化散射系数
figure % 新建图形窗口
imagesc(scat); % 绘制系数矩阵的热力图
title('Scattering coefficients (all orders)'); % 设置标题
colorbar; % 添加颜色条


完整代码通过知乎学术咨询获得:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1
工学博士,担任《Mechanical System and Signal Processing》审稿专家,《中国电机工程学报》,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。





















暂无评论内容