📄 selfadapt.m
字号:
function Temp_adapt=selfadapt(Temp_act,Temp_cal,thick_class)
% 一次指数平滑法
% Temp_adapt value after selfadapts
% Temp_act value by measurement
% Temp_cal value calculated by model
[row col]=size(Temp_act);
n=row;
alpha=0.35;
% 3-sigma外的异常点不参与自适应
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k_real=Temp_act./Temp_cal;
index=judge3sigma(Temp_cal);
k_real(index)=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 一次指数平滑法,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k=1;
Temp_adapt(1,1)=Temp_cal(1,1);
for i=2:n
k=(1-alpha)*k+alpha*k_real(i-1,1); %指数平滑
Temp_adapt(i,1)=Temp_cal(i,1)*k;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function index=judge3sigma(value)
% Eliminate the data out of range: abs(cal-mean(act))>3*std
% value data to be judged
% index return data index out of 3-sigma
value_std=std(value);
value_mean=mean(value);
index=find(abs(value-value_mean)>2*value_std);
function dataprocess
% 按厚度等级1~20,将数据分割
[data varname]=xlsread('.\data\2050\THICK_CLASS\THICK.xls');
for ii=1:20
eval(['data_thickcls',num2str(ii),'=data(find(data(:,64)==',num2str(ii),'),:);'])
fn=['.\data\2050\THICK_CLASS\data_thickcls',num2str(ii)];
dn=['data_thickcls',num2str(ii)];
xlswrite(fn,varname,'sheet1','A1')
eval(['xlswrite(fn,',dn,',',strcat(['''','sheet1','''',',','''','A2','''']),')']);
end
function alpha=optm(Temp_act,Temp_cal)
[row col]=size(Temp_act);
n=row;
% 剔除3-sigma外的异常点,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k_real=Temp_act./Temp_cal;
% index=judge3sigma(Temp_cal);
% k_real(index)=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 寻优,找出 alpha 的最优点,用粒子群。
%%%%%%%%%%%%%%%%%%%%%%%%%%%
iflag=0;
for alpha=0.01:0.01:1
iflag=iflag+1;
% 指数平滑法,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k=1;
Temp_adapt(1,1)=Temp_cal(1,1);
for i=2:n
k=(1-alpha)*k+alpha*k_real(i-1,1); %指数平滑
Temp_adapt(i,1)=Temp_cal(i,1)*k;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
value_mse(iflag)=sqrt(mse(Temp_act(:,1)-Temp_adapt(:,1)));
end
[C,I] = min(value_mse);
alpha=0.01+(I-1)*0.01;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
assignin('base','value_mse',value_mse)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -