📄 lsparaid.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%用最小二乘法参数辨识%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
clear;
clc;
load('expdata1.txt');
rawData=expdata1;%原始数据
sizeData=size(rawData);%获得数据大小
rawOutData=rawData(:,1);%原始数据输出
rawInData=rawData(:,2);%原始数据输入
%输出数据求和
rawOutAll=0;
for i=1:sizeData(1,1)
rawOutAll=rawOutAll+rawOutData(i);
end
rawOutAve=rawOutAll/sizeData(1,1);%原始输出平均值
outData=rawOutData-rawOutAve;%扣除直流分量后的输出数据
inData=rawInData-45;%扣除直流分量后的输入数据
%
%不进行滤波处理
%
%Z(l)
for l=1:181
z(l)=outData(l+5);
end
Z=z';
%H(i,j)
for i=1:181
for j=1:5
H(i,j)=-outData(i+5-j);
H(i,j+5)=inData(i+5-j);
end
end
theta=inv(H'*H)*H'*Z;
theta'%cout theta
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%模型检验%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%计算残差
for i=1:180
outData1(i)=[-outData(i+5) -outData(i+4) -outData(i+3) -outData(i+2) -outData(i+1) inData(i+5) inData(i+4) inData(i+3) inData(i+2) inData(i+1)]*theta;
e(i)=outData(i+6)-outData1(i);%残差
end
t=1:180;
subplot(2,1,2);
plot(t,e);
alle=0;
for i=1:180
alle=alle+e(i);
end
alle=alle/180;%残差的期望
%r0
r0=0;
for i=1:180
r0=r0+e(i)^2;
end
r0=r0/180;
%r(l)
for l=1:20
r(l)=0;
for k=1:180-1
r(l)=r(l)+e(k)*e(k+1);
end
r(l)=r(l)/180;
% loue(l)
loue(l)=r(l)/r0;
t1=1:20;
subplot(2,1,1);
plot(t1,loue);
end
loue'%cout loue
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -