📄 ls_temp.m
字号:
clear all;
close all;
%load the data of time between failures,this mat file contain five
%datasets.
load timebetweenfailures;
s1{1} = SYS1(:,2)';
s1{2} = SS3(:,2)';
s1{3} = CSR1(:,2)';
s1{4} = CSR2(:,2)';
s1{5} = CSR3(:,2)';
% for KK = 1:length(s1)
s = s1{1};
% load kekaoxing;
% load NewData;
% s = NewData(:,2)';
% m is the dimension of state space,k is the most kth near pointer ,T is
% the prediction step length.
%*****************************************************************
%convert the row data to cumulate data
%*****************************************************************
for I = 1:length(s)
temps = 0;
for J = 1:I
temps = temps + s(J);
end
cums(I) = temps;
end
repeat_number = 0;
% for m = 2:5
% for k = 7:25
m = 14;
k = 20;
T = 1;
t = 0;
start_number = length(s)-50;
end_number = length(s);
for test_number = start_number:end_number % ---------------------------------------------------- 1 end
%current value for prediction of X(t+T)
for I = 1:m
Xt(I) = cums(test_number-T+I-m);
end
% Xt = Xt - mean(Xt);
%**************************************************************************
%find the k most near Xt
for I = 1:test_number - T - m
tempdistance = 0;
for J = 1:m
tempdistance = tempdistance + (Xt(J) - cums(I+J-1))^2;
end
distance_v(I) = tempdistance;
end
[min_v,min_i] = sort(distance_v);
for I = 1:k
for J = 1:m
X(I,J) = cums(min_i(I) + J -1);
end
Y(I) = cums(min_i(I) +(m-1)+ T );
end
Y = Y';
% mean_Y = mean(Y);
% Y = (Y - mean_Y)';
% for I = 1:k
% X(I,:) = X(I,:) - mean(X);
% end
% w denote the estimate parameter.
w = (inv(X'*X))*X'*Y;
t = t + 1;
Yt(t) = Xt*w ;%+ mean_Y;
% if t>1
% Yt1(t) = Yt(t) - Yt(t-1);
% else
% disp(sprintf('The value of test_number is %.3f',test_number));
% Yt1(t) = Yt(t) - cums(test_number - 1);
% end
% Yt1(t) = Yt(t) - cums(test_number - 1);
clear X Y distance_v min_i;
end % ------------------------------------------------------------------1 end
%**************************************************************************
%Convert the cumulate time to time between failures
%**************************************************************************
for i = 1:end_number - start_number
Yt1(i) = Yt(i+1) - Yt(i);
%the value of time between failures must be positive.
if Yt1(i) < 0
Yt1(i) = 0;
end
cums1(i) = cums(i+start_number-1) - cums(i+start_number-2);
end
repeat_number = repeat_number + 1;
RMSE_cum(repeat_number) = sqrt( ( Yt - cums(start_number:end_number) ) * ( Yt - cums(start_number:end_number ) )' / (end_number - start_number + 1) );
% disp(sprintf('Using the local linear method to predict,the RMSE of cumulate is %.3f',RMSE_cum(repeat_number)));
% for I = start_number:end_number
% Yt1(I-start_number+1) = Yt(I-start_number+1) -cums(I-2)-1000 ;
% end
RMSE(repeat_number) = sqrt( ( Yt1 - s(start_number:end_number-1) ) * ( Yt1 - s(start_number:end_number-1 ) )' / (end_number - start_number ) );
MAE(repeat_number) = sum(abs(Yt1-s(start_number:end_number-1)))/(end_number - start_number );
disp(sprintf('Using the local linear method to predict,the RMSE is %.3f,the MAE is %.3f',RMSE(repeat_number),MAE(repeat_number)));
numbers = start_number:end_number-1;
plot(numbers,Yt1(1:end_number - start_number),'.-',numbers,cums1(1 :end_number - start_number ),'r.--');
title('某嵌入式系统故障间隔时间序列一步预测');
legend('Predicting Data','Raw Data',2);
xlabel('故障发生序号(无量纲)');ylabel('故障间隔时间(单位:S)');
% axis([100,135,-1000,8000]);
% plot(numbers,Yt(2:35),'.-',numbers,cums(start_number+1:end_number),'r.--');
% title('某嵌入式系统故障间隔时间序列一步预测');
% legend('Predicting Data','Raw Data',2);
% xlabel('故障发生序号(无量纲)');ylabel('累积运行时间(单位:S)');
% axis([100,135,-1000,9e+4]);
% end
% end
% end
% disp(sprintf('The mean of the RMSE is %.3f',mean(RMSE_tr)));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -