📄 als_temp.m
字号:
% function [als] = als_temp_function();
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)';
M = 100;
% for KK = 1:length(s1) %-------------------------------------------------------------------------------- the first end
s = s1{5};
% 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 =2;
k = 20;
T = 1;
t = 0;
start_number = length(s)-20;
end_number = length(s)+1;
for test_number = start_number:end_number % ---------------------------------------------------- 1 end
flag_m = 0;
while flag_m == 0 % ------------------------------------------------------2 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';
% w denote the estimate parameter.
eigen = descending(sqrt(abs(eig(X'*X))));
pos = poszero(eigen);
tempvalue = eigen(pos);
flag_m = 1;
while (eigen(1)/tempvalue > M)
pos = pos - 1;
tempvalue = eigen(pos);
flag_m = 0;
m = pos;
end
if flag_m == 0
clear X Y Xt distance_v min_i;
end
end %------------------------------------------------------------------------2 end
% w denote the estimate parameter.
w = (inv(X'*X))*X'*Y;
t = t + 1;
Yt(t) = Xt*w ;%+ mean_Y;
clear X Y Xt 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 number of Yt1(i) must be a positive number or zero.
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
for i=2:length(Yt1)
disp(sprintf('No %d the real value is %d the predicting relative error value is %.3f',i-1,s(start_number+i-1),abs(s(start_number+i-1)-Yt1(i))));
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),'Parent',handles.axes1));
% 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]);
clear cums;
% end %----------------------------------------------------------------------------------------------------- the first end
% end
% end
% disp(sprintf('The mean of the RMSE is %.3f',mean(RMSE_tr)));
% nn = 44;
% numbers = 1:400;
% plot(numbers,s1{1}(length(s1{1})-nn:length(s1{1})),numbers,s1{2}(length(s1{2})-nn:length(s1{2}))/1000,numbers,s1{3}(length(s1{3})-nn:length(s1{3})),numbers,s1{4}(length(s1{4})-nn:length(s1{4})),numbers,s1{5}(length(s1{5})-nn:length(s1{5})));
% 五个数据集的原始数据
% plot(1:length(s1{1}),s1{1},'k-',1:length(s1{2}),s1{2}./1000,'r*--',1:length(s1{3}),s1{3},'b:',1:length(s1{4}),s1{4},'xk-.',1:length(s1{5}),s1{5},'r-+');
% title('五个数据集的原始数据');
% legend('SYS1','SS3','CSR1','CSR2','CSR3');
% xlabel('故障发生序号(无量纲)');ylabel('故障间隔时间(单位:S)');
% xlabel('Failure number');ylabel('Time between failures--(S)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -