本程序参考中文EI期刊《电网技术》网络首发文献:《基于马尔可夫转换场与多头注意力机制的电能质量扰动分类方法》,程序注释清晰,干货满满,下面对文章和程序做简要介绍!
原理:马尔可夫转换场(Markov transition field, MTF)是一种将时序数据转化为空间图像数据的方法,该方法扩展了马尔可夫状态转移矩阵,通过顺序表达状态转移矩阵,充分保留了离散化时域动态信息,最终利用模糊内核聚合生成二维图像。以电压正弦信号为例,MTF示意图如下图所示。
MTF-CNN-Attention进行故障识别的方法具有几个创新性的方面:
输入数据格式:(一行一个样本,最后一列表示故障所属类别标签)
训练曲线:准确率和损失变化图
加载数据
data = xlsread('特征数据带标签.xlsx');
获取数据集的样本数量和每个样本的长度
sampleLength] = size(data);
循环处理每个样本数据
for sampleIdx = 1:numSamples
生成数据
从data中获取当前样本数据
featureData = data(sampleIdx, 1:end - 1);
X = featureData;
m = length(X);
将数据归一化到[0, 1]
X_normalized = (X - min(X)) / (max(X) - min(X));
构造转移矩阵W
numDataPoints = length(X);
分成Q个分位箱(按照个数),从小往大:1、2、3、4
Q = 4;
将每个元素映射到分位箱1、2、3、4,
X_Q = ones(1, numDataPoints);
threshold = 0;
初始化阈值
thresholds = ones(1, Q + 1);
for i = 2 : Q + 1
循环计算小于当前阈值的数据个数,达到阈值时跳出循环
while sum(X_normalized < threshold) < numDataPoints * (i - 1) / Q
threshold = threshold + 0.0001;
end
记录每一个分位箱的阈值
threshold; =
将原始数据向量变成对应的分位箱次序向量
< thresholds(i) & X_normalized > thresholds(i - 1))) = i - 1;
end
计算马尔可夫矩阵
初始化各状态转移计数
sum_11 = 0; sum_12 = 0; sum_13 = 0; sum_14 = 0;
sum_21 = 0; sum_22 = 0; sum_23 = 0; sum_24 = 0;
sum_31 = 0; sum_32 = 0; sum_33 = 0; sum_34 = 0;
sum_41 = 0; sum_42 = 0; sum_43 = 0; sum_44 = 0;
欢迎感兴趣的小伙伴点击“阅读原文”或上方链接获得完整版代码哦~,关注小编会继续推送更有质量的学习资料、文章程序代码~