轴承故障检测(分类任务)+傅里叶变化+CNN+matlab

1 介绍

使用西储大学的轴承数据集,其实用哪个都行,可能最后的精度会不一样,先读取数据,然后使用傅里叶转换为图像,然后搭建cnn模型,将图像大小转换为模型使用的大小,例如resnet50,输入大小就是224*224。同样提供python版本。

2 数据处理

总共10个类别

对每个数据进行采样,设置2000个样本,每个样本取连续的300个点

matlab 复制代码
% 采样,每个数据采集N条样本,每条样本M长度
M = 2000;
N = 300;
image_index = 1;
sample_all_data = zeros(3, N, M);
for i = 1:10
    sample_class_data = zeros(N, M);
    data = all_data{i};
    % 数据采样
    random_sequence = randperm(length(data) - M);
    selected_numbers = random_sequence(1:N);

    % 对于每个采样的数据,使用fft变换
    for j = 1:N
        start_index = selected_numbers(j);
        sample_data = data(start_index: start_index+M-1);
        sample_class_data(j,:) = sample_data;
        file_path = "images\" +num2str(i) +"\"+ num2str(image_index)+".jpg";
        % 进行fft变换
        process_data(sample_data, file_path)
        image_index = image_index + 1;
    end
    sample_all_data(i,:,:) = sample_class_data;
end

3 fft变换

使用matlab中的变换,转换为频谱图,然后保存,结果如下所示

matlab 复制代码
[S, f, t] = spectrogram(sample_data);

4 cnn模型

搭建一个普通的模型就行,因为这个数据集识别准确率特别高,最后都能到100%

matlab 复制代码
% 设置图像文件夹路径
data_folder = 'images';

% 创建图像数据存储器
imds = imageDatastore(data_folder, ...
    'IncludeSubfolders', true, 'LabelSource', 'foldernames');
[train_imds, test_imds] = splitEachLabel(imds, 0.7, 'randomized');


% 构建 CNN 模型
layers = [
    imageInputLayer([224 224 3])
    convolution2dLayer(3, 16, 'Padding', 'same')
    batchNormalizationLayer
    reluLayer
    maxPooling2dLayer(2, 'Stride', 2)
    convolution2dLayer(3, 32, 'Padding', 'same')
    batchNormalizationLayer
    reluLayer
    maxPooling2dLayer(2, 'Stride', 2)
    convolution2dLayer(3, 64, 'Padding', 'same')
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer
];
详情加Q 596520206 同样提供python版本
相关推荐
fie88894 小时前
基于MATLAB的狼群算法实现
开发语言·算法·matlab
gihigo19984 小时前
MATLAB中生成混淆矩阵
开发语言·matlab·矩阵
kaikaile19956 小时前
基于MATLAB的传统插值法实现超分辨率重建
人工智能·matlab·超分辨率重建
yongui478347 小时前
基于深度随机森林(Deep Forest)的分类算法实现
算法·随机森林·分类
wearegogog1238 小时前
基于MATLAB的谷物颗粒计数方法
开发语言·matlab
算法与编程之美8 小时前
探究pytorch中多个卷积层和全连接层的输出方法
人工智能·pytorch·深度学习·神经网络·cnn
MATLAB代码顾问8 小时前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
yong999011 小时前
MATLAB实现DLT645协议
开发语言·matlab
foundbug99911 小时前
基于MATLAB绘制CALIPSO Level 2产品中体积退偏比垂直廓线和频率分布直方图
开发语言·matlab
ghie909011 小时前
图像去雾算法详解与MATLAB实现
开发语言·算法·matlab