siarx.m

来自「matlab辨识算法的仿真程序。。很有用哦」· M 代码 · 共 52 行

M
52
字号
function  [sys0,sys1]=siarx(Ts,orderx)
clc;

load SIdata.mat                                     %导入用于模型辨识的数据
N=length(z);
servo=iddata(z,u,Ts);
servo.InputName='position';
servo.OutputName='distance';
ze=servo(1:N);
zv=servo(1:N);
figure,plot(ze)
%figure, plot(ze(1:1000))
%ze=dtrend(ze); 
%zv=dtrend(zv); 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ARX模型辨识
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
NN=struc(2,2,0:100);                                %模型结构辨识
v=arxstruc(ze,zv,NN);
nn=selstruc(v,0);
nk=nn(3);                                           %确定延迟周期nk
NN=struc(1:orderx,1:orderx,0:nk+1); 
v=arxstruc(ze,zv,NN);
nn=selstruc(v,0)
m=arx(ze,nn);                                       %ARX模型辨识
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ARX模型及降阶模型分析
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('检验数据下ARX模型与实际系统的吻合程度:')       %模型检验
[yh1,f1]=compare(zv,m);
fit=f1   
disp('按任意键继续!')
pause
mj=idmodred(m);                                     %模型降阶
disp('检验数据下降阶模型与实际系统的吻合程度:')
[yh1,f1]=compare(zv,mj);
fit=f1  
figure,compare(zv,m,mj);

my=noisecnv(m);
s=tf(my);                                           %将模型转化为传递函数
sys0=s(1);                                          %ARX模型的传递函数                               
mjj=noisecnv(mj);
sy=tf(mjj);                                         %降阶模型转化为传递函数
sys1=sy(1);                                         %降阶模型的传递函数
disp('降阶后模型的传递函数:')
sys1
[num,den]=tfdata(sys1);
disp('传递函数的系数向量:')
num=num{1}
den=den{1}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?