armaxoutline.m

来自「基于MATLAB系统辨识工具箱的离线辨识程序」· M 代码 · 共 37 行

M
37
字号
function [m,fit]=ARMAXoutline(u,z,ts,N,nns,nnt)
%获取模型结构参数范围
nas=nns(1);nat=nnt(1);
nbs=nns(2);nbt=nnt(2);
ncs=nns(3);nct=nnt(3);
nk=nns(4);
if (nat-nas+1)*(nbt-nbs+1)*(nct-ncs+1)>150
    return 
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%获取实验数据,及数据预处理
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
servo=iddata(z,u,ts);
servo.InputName='position';
servo.OutputName='distance';
ze=servo(1:N);
%figure, plot(ze(1:1000))
%ze=dtrend(ze);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%模型检验及最优模型选择
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
temp=0;
for k1=nas:nat
    for k2=nbs:nbt
        for k3=ncs:nct
            m11=armax(ze,[k1 k2 k3 nk]);     %采用基于最小二乘法估计的ARMAX模型辨识
            [yh,fit]=compare(ze,m11);       %计算不同结构模型的的适应度
            if fit>temp
                temp=fit;m=m11;              %选择适应度最高的模型
                nn=[k1 k2 k3 nk];
            end
            clc;
        end
    end
end
%figure, compare(ze,m);                      %模型检验
[yh,fit]=compare(ze,m);

⌨️ 快捷键说明

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