分类预测 | Matlab基于AOA-VMD-BiLSTM故障诊断分类预测
目录
分类效果

功能概述
(1) main1_AOA_VMD.m
核心功能:
使用阿基米德算法算术优化算法(AOA) 优化变分模态分解(VMD) 的关键参数(惩罚因子α和模态数K),对多通道信号进行自适应分解。
关键步骤:
用AOA优化VMD参数(最小化包络熵)
用最优参数执行VMD分解
绘制分解结果(IMF分量)
读取4个Excel文件(0.xlsx~3.xlsx)的振动信号数据
数据预处理(替换0值为4)
对每个信号通道:
保存原始信号和VMD分解结果
(2) main2_AOA_VMD_BiLSTM.m
核心功能:
对比普通BiLSTM 和 AOA-VMD-BiLSTM 在故障诊断中的性能:
方案1:原始信号 → BiLSTM分类
方案2:VMD分解信号 → BiLSTM分类
关键步骤:
普通BiLSTM(20个隐藏单元)
AOA-VMD-BiLSTM(100个隐藏单元)
加载main1生成的信号数据
划分训练集/测试集(70%/30%)
构建两个BiLSTM模型:
评估指标:准确率/精确率/召回率/F1分数
绘制混淆矩阵和性能对比曲线

依赖关系:
main2 必须 在main1之后运行,依赖其输出的x_data.mat(原始信号)和vmd_data.mat(VMD分解结果)
技术流程:
信号分解 → 特征提取 → 故障诊断模型构建 → 性能对比
算法步骤
(1) AOA-VMD 优化流程(main1)
for 每个信号通道 j in [1, d]:
- 设置AOA参数:种群数=10, 最大迭代=10
- 定义优化目标:最小化包络熵 fun(α,K)
- AOA搜索最优[α, K]
- 用最优(α,K)执行VMD分解
- 绘制IMF分量
end
保存原始信号 + 所有VMD结果
(2) 故障诊断流程(main2)
普通BiLSTM分支: - 加载原始信号x
- 数据归一化
- 构建BiLSTM网络(20个隐藏单元)
- 训练+测试 → 计算指标
AOA-VMD-BiLSTM分支:
- 拼接VMD分量[u]和标签[label]
- 数据归一化
- 构建增强BiLSTM(100个隐藏单元)
- 训练+测试 → 计算指标
性能对比:
- 绘制准确率/损失曲线对比图
- 生成混淆矩阵
技术路线


运行环境要求
MATLAB R2020b+
程序设计
- 完整程序和数据私信博主回复Matlab基于AOA-VMD-BiLSTM故障诊断分类预测。
clike
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
data = x;
%输入输出数据
input=data(:,1:end-1); %data的第一列-倒数第二列为特征指标
output=data(:,end); %data的最后面一列为标签类型
N=length(output); %全部样本数目
testNum=0.3*N; %设定测试样本数目
trainNum=N-testNum; %计算训练样本数目
% 划分训练集、测试集
%随机抽取
id=randperm(N);
input=input(id,:);
output=output(id,:);
%训练集、测试集
P_train = input(1:trainNum,:)';
T_train =output(1:trainNum)';
P_test =input(trainNum+1:trainNum+testNum,:)';
T_test =output(trainNum+1:trainNum+testNum)';
num_class = length(unique(data(:, end))); % 类别数(Excel最后一列放类别)
% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input );
t_train = categorical(T_train)';
t_test = categorical(T_test )';
% 格式转换
for i = 1 : trainNum
pp_train{i, 1} = p_train(:, i);
end
for i = 1 : testNum
pp_test{i, 1} = p_test(:, i);
end
% 创建网络
numFeatures = size(P_train, 1); % 特征维度
参考资料
1\] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502 \[2\] https://blog.csdn.net/kjm13182345320/article/details/128690229