Overview of Results
Machine Learning Heart Date: September 10, 2025
CNN-Based Remaining Useful Life Prediction for Aircraft Engines (MATLAB Implementation)
This article will introduce how to implement a Remaining Useful Life (RUL) prediction model for aircraft engines based on Convolutional Neural Networks (CNN) using MATLAB.
The prediction of the remaining useful life of aircraft engines is a key technology in predictive maintenance. By analyzing data, models can be established to predict when the engine may require maintenance or replacement.
MATLAB Implementation Code
% CNN-Based Remaining Useful Life Prediction for Aircraft Engines
% Assuming pre-processed training data is available
% Load data
load('engine_data.mat'); % Contains trainData, trainRUL, testData, testRUL
% Data preprocessing
% Reshape data to the format required by CNN [number of samples, number of features, time steps, 1]
trainData = reshape(trainData, [size(trainData,1), size(trainData,2), size(trainData,3), 1]);
testData = reshape(testData, [size(testData,1), size(testData,2), size(testData,3), 1]);
% Create CNN model
layers = [ imageInputLayer([size(trainData,2) size(trainData,3) 1]) % Input layer
convolution2dLayer(3, 32, 'Padding', 'same') % Convolutional layer
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2) % Pooling layer
convolution2dLayer(3, 64, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(3, 128, 'Padding', 'same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(256) % Fully connected layer
reluLayer
dropoutLayer(0.5)
fullyConnectedLayer(128)
reluLayer
dropoutLayer(0.5)
fullyConnectedLayer(1) % Output layer
regressionLayer];
% Set training options
options = trainingOptions('adam', ...
'MaxEpochs', 100, ...
'MiniBatchSize', 32, ...
'InitialLearnRate', 0.001, ...
'LearnRateSchedule', 'piecewise', ...
'LearnRateDropFactor', 0.5, ...
'LearnRateDropPeriod', 20, ...
'Shuffle', 'every-epoch', ...
'ValidationData', {testData, testRUL}, ...
'ValidationFrequency', 30, ...
'Verbose', 1, ...
'Plots', 'training-progress');
% Train model
net = trainNetwork(trainData, trainRUL, layers, options);
% Predict
predictedRUL = predict(net, testData);
% Evaluate model
rmse = sqrt(mean((predictedRUL - testRUL).^2));
fprintf('Test set RMSE: %.2f\n', rmse);
% Visualize results
Complete Code
Code access (not for public use, please do not misuse)