?? 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 + -