gusucode.com > 系统辨识中的各种辨识算法matlab源码程序 > code/lsident.m
%一次的最小二乘法 %di'=[-y(i),-y(i+1),...,-y(i+n-1),u(i),...u(i+n-1)] %系数向量o'=[an,...a1,bn,...b1] %打开数据 %load('c:\\MATLAB701\\work\\data.mat'); %打开数据 data; %标量的输入 fprintf(1,'\n');%换行 n=input('input the system order of n :'); %变量数为2n % %O1=zeros(2*n,1); %下标1表示为迭代的第k次 %P1=1000*eye(2*n); dn=zeros(1,2*n); %给dn赋初值 fprintf(1,'\n');%换行 %N=input('input the munber of data of N :'); N=200-n; for i=1:N u1=u(i:n+i-1); %y1=y(1:2*n) y1=-y(i:n+i-1); d1=[y1;u1]; %新的一组数据 dn=[dn;d1']; %构造数据矩阵 end yn=y(n+1:n+i); dN=dn(2:i+1,:); %数据矩阵,去除第一行零元素 o=inv(dN'*dN)*dN'*yn %模型阶次的检验 %损失函数检验法 j=(yn-dN*o)'*(yn-dN*o) %AIC准则采用赤池信息准则判断系统的阶,即用基本信息量定界准则 %AIC=(1+2p/N)*J p=2*n %当 AIC达到极小时,可以将此时系统的结数作为系统阶的估计值。 AIC=j+2*2*n*j/N