精华内容
下载资源
问答
  • 基于Matlab系统辨识工具箱参数辨识
  • 《基于MATLAB系统辨识工具箱参数辨识
  • MATLAB系统辨识工具箱学习

    万次阅读 多人点赞 2019-06-02 19:11:19
    文章目录1 进入System Identification主界面2 ...打开APP栏的系统辨识工具箱, 弹出如下界面 然后点击import data,选择加载类型为时域类型 2 运行程序,加载数据 程序运行之后,从工作区直接拖拽相应的变量到I...

    1 进入System Identification主界面

    打开APP栏的系统辨识工具箱,
    在这里插入图片描述

    弹出如下界面
    在这里插入图片描述

    然后点击import data,选择加载类型为时域类型
    在这里插入图片描述


    2 运行程序,加载数据

    程序运行之后,从工作区直接拖拽相应的变量到InputOutput
    在这里插入图片描述

    点击Import按钮,成功加入需要辨识的一组数据,加载成功之后的数据如图:
    在这里插入图片描述


    3 参数辨识

    点击Estimate,选择需要辨识的系统模型的结构,这里选择Transfer Function Models传递函数模型
    在这里插入图片描述

    在弹出的传递函数选项中,设置零点和极点个数,取消勾选Time delay中的Fixed,这样就可以自动辨识时间延迟。设置完毕之后,点击Estimate按钮,开始分析
    在这里插入图片描述

    分析过程报告为

    Estimating delays as multiples of sample time ... done. 
    Initializing model parameters... 
    Initializing using 'iv' method... done.  
    Initialization complete.  
    Nonlinear least squares with automatically chosen line search method 
    -----------------------------------------------------------------------------------
    Iteration  Cost  Step  Norm_of_optimality  First_order_expected  Improvement(num %)
    -----------------------------------------------------------------------------------     
    0      0.288097         -      8.88e+06        245          -        -     
    1      0.270171  3.58e+03      1.26e+07        245       6.22        4     
    2       0.25489  4.85e+03      1.75e+07        264       5.66        3     
    3      0.227875  6.93e+03      2.51e+07        304       10.6        2     
    4      0.218596  8.56e+03       3.5e+07        385       4.07        2     
    5     0.0955602       240      4.63e+07        427       56.3        0     
    6     0.0953997    0.0977      4.64e+07        979      0.168       10     
    7     0.0953895   0.00525      4.64e+07        981     0.0107       14     
    8     0.0953844    0.0026      4.64e+07        981    0.00536       15     
    9     0.0953818   0.00129      4.64e+07        981    0.00268       16    
    10     0.0953805  0.000645      4.64e+07        981    0.00134       17    
    11     0.0953799  0.000322      4.64e+07        981    0.00067       18    
    12     0.0953797  8.04e-05      4.64e+07        981   0.000167       20    
    13     0.0953796  4.02e-05      4.64e+07        981   8.38e-05       21    
    14     0.0953796  2.01e-05      4.64e+07        981   4.19e-05       22    
    15     0.0953796  5.03e-06      4.64e+07        981   1.05e-05       24    
    16     0.0509421  0.000378      1.27e+06        981       46.6        1    
    17     0.0506209      22.6      1.36e+06   1.73e+03      0.631        8    
    18     0.0506104      0.66      1.36e+06   1.74e+03     0.0207       13    
    19     0.0506052     0.329      1.36e+06   1.74e+03     0.0103       14    
    20     0.0506045    0.0411      1.36e+06   1.74e+03    0.00129       17 
    -----------------------------------------------------------------------------------
    Estimating parameter covariance... done. 
    

    此时,右侧的模型窗口出现了辨识的tf1,拖拽到MATLAB中的工作区workspace
    在这里插入图片描述


    4 查看结果

    4.1 系统辨识窗口查看

    双击tf1,查看辨识结果
    在这里插入图片描述

    4.2 在命令行中查看

    将辨识出的结果拖拽到MATLAB工作区之后,在命令行窗口输入tf1

    >> tf1
    
    tf1 =
     
      From input "u1" to output "y1":
                   0.0002741 s + 8.738e-05
      exp(-8*s) * --------------------------
                  s^2 + 0.7922 s + 8.613e-08
     
    Name: tf1
    Continuous-time identified transfer function.
    
    Parameterization:
       Number of poles: 2   Number of zeros: 1
       Number of free coefficients: 4
       Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.
    
    Status:                                                       
    Estimated using TFEST on time domain data "throttle2velocity".
    Fit to estimation data: 68.84% (stability enforced)           
    FPE: 0.05213, MSE: 0.05056                                    
    >> 
    

    参考文章

    matlab系统辨识应用例子.doc
    https://max.book118.com/html/2018/1013/6033223232001222.shtm

    MATLAB如何进行系统辨识(传递函数)_百度经验
    https://jingyan.baidu.com/article/72ee561a72fd74e16138dfae.html

    Estimating Simple Models from Real Laboratory Process Data - MATLAB & Simulink Example - MathWorks 中国
    https://ww2.mathworks.cn/help/ident/examples/estimating-simple-models-from-real-laboratory-process-data.html?refresh=true&requestedDomain=zh

    展开全文
  • MATLAB系统辨识工具箱学习,详细教程!

    多人点赞 热门讨论 2021-02-02 22:29:28
    MATLAB系统辨识工具箱学习,详细教程!进入统辨识工具箱主界面进入方式及界面介绍:打开方式:界面介绍:运行程序,加载数据辨识输入信号区域:输入数据预处理:参数辨识系统阶次的选择:模型结构的配置:分析: ...

    进入统辨识工具箱主界面

    系统辨识:系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。现代控制理论中的一个分支。通过辨识建立数学模型的目的是估计表征系统行为的重要参数,建立一个能模仿真实系统行为的模型,用当前可测量的系统的输入和输出预测系统输出的未来演变,以及设计控制器。对系统进行分析的主要问题是根据输入时间函数和系统的特性来确定输出信号。

    进入方式及界面介绍:

    结合我的例子数据进行讲解

    打开方式:

    1、 在命令行窗口输入命令:ident
    在这里插入图片描述
    2、 在APPS选择System Identification(前提是装了控制系统设计与分析工具箱)
    在这里插入图片描述

    界面介绍:

    在这里插入图片描述

    运行程序,加载数据

    在这里插入图片描述
    在matlab中导入excel文件,主页直接点选导入数据,选择想要导入的excel文件即可。
    在这里插入图片描述
    这是matlab导入数据可选的文件格式!
    在这里插入图片描述

    辨识输入信号区域:

    在这里插入图片描述
    这里我们选择时域,
    input对应导入到workspace里面的输入数据,output对应导入到workspace里面的输出数据。
    之后可以输入导入信号的名称,开始时间和采样时间。
    在这里插入图片描述
    最后点击“import”导入,出现如下效果,点击“Close”关闭。
    在这里插入图片描述

    输入数据预处理:

    对输入的信号进行处理,可选多份数据中的一份、合并数据、数据平滑化、滤波、采样等方法。
    这里我们选择“Select range”对数据进行处理,前10s进行模型辨识,后10s进行数据验证。
    在这里插入图片描述
    前10s数据用来模型辨识。
    在这里插入图片描述
    后10s数据用来验证
    在这里插入图片描述
    数据预处理的最后一部,

    在这里插入图片描述
    数据回收:将类似图中“mydata”拖到“Trash”,相当于删除功能。

    参数辨识

    这里我们以状态方程为例,选择“State Space Models”
    在这里插入图片描述

    系统阶次的选择:

    之后我们会看到状态方程的配置对话框,如我们知道系统是几阶模型,则选择“Specify value”,后面输入对应的阶数,即可。
    假如我们不知系统的阶数,则选择“Pick best value in the range”,系统会自动输出1-10阶对应的方程,同时也会指定最优的解。
    在这里插入图片描述

    模型结构的配置:

    如果我们不知道,则默认选择Free。不通的“From”对应不通的数学结构。
    在这里插入图片描述
    最后就是三种不同的估计算法, PEM比N4SID精度更高,N4SID是最简单的方法,一般可满足需求。“Regularized Reduction”是针对离散系统的。前两中是针对连续系统。
    在这里插入图片描述
    然后点击“Estimate”。出现如下。
    在这里插入图片描述

    分析:

    可以看出系统的最有解是4阶,前10秒的数据拟合程序为98.15%,但是我们也可以选择其他阶数进行导入。导入后可以发现,在模型辨识结果区域,可以看到,方程已经导出。“ss1”为系统的4阶的状态方程。
    在这里插入图片描述
    双击“ss1”,我们可以看到状态方程的系数已经加载出来,对应的代码实现也已经在下方加载。
    在这里插入图片描述
    我们点击主界面“Model Output”可以看到根据系统辨识出来的4阶模型后10s数据的拟合程度。当然,如果我们选择的精度越高,对应的拟合程度会越好,但是系统阶次过高,系统的复杂程度会更高。
    在这里插入图片描述
    关注我,下一期更新传递函数的讲解!

    展开全文
  • 参数模型类 在非参数模型类中主要包括脉冲响应模型和频域描述模型 如下图假设系统为线性系统u输入y输出v噪声输入输出关系为 u v y 线性对象 其中q为时间平移算子序列g(k)为对象的脉冲响应模型v(t)是不可测量的噪声...
  • 一个关于MATLAB的系统辨识工具箱的小例子。以最简洁的形式展示了MATLAB系统辨识工具箱用于非线性系统辨识的操作方法。
  • MATLAB控制工程工具箱技术手册

    热门讨论 2009-08-08 21:31:15
    本书主要介绍了MATLAB中与控制工程相关的6个基础工具箱:系统辨识工具箱、控制系统工具箱、鲁棒控制工具箱、模型预测控制工具箱、模糊逻辑工具箱和非线性控制设计模块,同时提供了MATLAB中的一些基础知识。...
  • 基于matlabGUI下面的飞机参数识别,包括气动参数识别,提供demo和相关说明,F16的相关代码,图形化界面输入
  • matlab自带遗传算法工具箱性能太差,因此采用外部工具箱来实现,具体安装方法请参考其他答案。 %% matlab_gatbx_test.m %遗传算法求f(x)=x*sin(10*pi*x)+2.0,在[-1,2]上的最大值 figure(1); fplot(@(variable)...

    matlab自带遗传算法工具箱性能太差,因此采用外部工具箱来实现,具体安装方法请参考其他答案。

    %% matlab_gatbx_test.m
     
    %遗传算法求f(x)=x*sin(10*pi*x)+2.0,在[-1,2]上的最大值
    figure(1);
    fplot(@(variable)variable.*sin(10*pi*variable)+2.0,[-1,2]);   %画出函数曲线
    %定义遗传算法参数
    NIND=40;        %个体数目(Number of individuals)
    MAXGEN=25;      %最大遗传代数(Maximum number of generations)
    PRECI=20;       %变量的二进制位数(Precision of variables)
    GGAP=0.9;       %代沟(Generation gap)说明子代与父代的重复率为0.1
    trace=zeros(MAXGEN,2);                        %寻优结果的初始值
    FieldD=[20;-1;2;1;0;1;1];                      %区域描述器(Build field descriptor),第2、3行为自变量的下界和上界
    Chrom=crtbp(NIND, PRECI);                      %定义初始种群 % 此时为2进制
    gen=0;                                         %代计数器
    variable=bs2rv(Chrom, FieldD);                 %计算初始种群的十进制转换   转为10进制
    ObjV=shang(variable);        %计算目标函数值
    while gen<MAXGEN %进化MAXGEN代
       FitnV=ranking(-ObjV);                                  %分配适应度值(Assign fitness values)ranking函数的功能就是目标值越小的分配值越大,
                                                              %本例求解最大值,应该要是他的适应度值更大,故必须使得ranking内的数越小,这样分配的适应度值才能大
       SelCh=select('sus', Chrom, FitnV, GGAP);               %选择,使用sus方式,也可以改用rws方式
       SelCh=recombin('xovsp', SelCh, 0.7);                   %重组,选用xovsp方式
       SelCh=mut(SelCh);                                      %变异
       variable=bs2rv(SelCh, FieldD);                         %子代个体的十进制转换,把染色体变为十进制   %%  所有子代的变量  
       ObjVSel=shang(variable);             %计算子代的目标函数值     所有的自带的目标函数结果
       [Chrom, ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群    全部种群 
       variable=bs2rv(Chrom, FieldD);                         %子代个体的十进制转换,转为十进制      全部种群的变量
       gen=gen+1;                                             %代计数器增加
       %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号
       [Y, I]=max(ObjV);hold on;                                            %% 所有目标值中 最大的
       plot(variable(I), Y, 'ro');                              %%%%%%%%%%%%%%%% 散点图      variable(I)就是x  Y就是目标值
       trace(gen,1)=max(ObjV);                                %遗传算法性能跟踪,把当代的最优值放入trace矩阵的第一行第目前代数列
       trace(gen,2)=sum(ObjV)/length(ObjV);                   %把当代种群目标函数的均值,放入trace矩阵的第二行第目前代数列
    end
    variable=bs2rv(Chrom, FieldD);                            %最优个体的十进制转换,转回十进制,以便输出
    hold on;
    grid on;
    plot(variable,ObjV,'b*');
    figure(2);
    plot(trace(:,1)); %把trace矩阵的第一列画出来(记录的是每一代的最优值)
    hold on;
    plot(trace(:,2),'-.');grid %把trace矩阵的第2列画出来(记录的是每一代种群目标函数均值)
    legend('解的变化','种群均值的变化')
     
     
    function z=shang(x) % 目标函数的核心部分(即缺省了优化目标的纯函数)
        z=x.*sin(10*pi*x)+2.0;
     
    end

    其中目标函数需要另存一个m文件

     function z=shang(x) % 目标函数的核心部分(即缺省了优化目标的纯函数)
        z=x(:,2).*sin(2*pi*x(:,1))+x(:,1).*cos(2*pi*x(:,2));
     
    end

     

    多参数辨识方法如下

    %% matlab_gatbx_test.m
    
    
    figure(1);
      %画出函数曲线
    lbx1=-2;ubx1=2; %函数自变量x1范围
    lbx2=-2;ubx2=2;%函数自变量x2范围
    ezmesh('x2*sin(2*pi*x1)+x1*cos(2*pi*x2)',[lbx1,ubx1,lbx2,ubx2],50);   %画出函数曲线
    hold on;
    %定义遗传算法参数
    
    NIND=40;         %个体数目(Number of individuals)
    MAXGEN=50;      %最大遗传代数(Maximum number of generations)
    PRECI=20;       %变量的二进制位数(Precision of variables)
    GGAP=0.9;       %代沟(Generation gap)说明子代与父代的重复率为0.1
    Px=0.7;         %交叉概率
    Pm=0.01;        %变异概率
    trace=zeros(MAXGEN,2);                        %寻优结果的初始值
    FieldD=[20 20;                %%  子串长度
        lbx1 lbx2;                    %% 下界
        ubx1 ubx2 ;                   %% 上界
        1 1;                     %% 编码方式 1 二进制 0 格雷编码
        0 0;                     %%  0 算数刻度  1 对数刻度
        1 1;                     %%  是否包含下边界  0 不包含 1 包含
        1 1];                     %% 是否包含上边界  0 不包含 1 包含
                                %区域描述器(Build field descriptor),第2、3行为自变量的下界和上界
    Chrom=crtbp(NIND, PRECI*2);                      %定义初始种群 % 此时为2进制
    gen=0;                                         %代计数器
    variable=bs2rv(Chrom, FieldD);                 %计算初始种群的十进制转换   转为10进制
    ObjV=shang(variable);        %计算目标函数值
    while gen<MAXGEN %进化MAXGEN代
       FitnV=ranking(-ObjV);                                  %分配适应度值(Assign fitness values)ranking函数的功能就是目标值越小的分配值越大,
                                                              %本例求解最大值,应该要是他的适应度值更大,故必须使得ranking内的数越小,这样分配的适应度值才能大
       SelCh=select('sus', Chrom, FitnV, GGAP);               %选择,使用sus方式,也可以改用rws方式
       SelCh=recombin('xovsp', SelCh, 0.7);                   %重组,选用xovsp方式
       SelCh=mut(SelCh,Pm);                                      %变异
       variable=bs2rv(SelCh, FieldD);                         %子代个体的十进制转换,把染色体变为十进制   %%  所有子代的变量  
       ObjVSel=shang(variable);             %计算子代的目标函数值     所有的自带的目标函数结果
       [Chrom, ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群    全部种群 
       variable=bs2rv(Chrom, FieldD);                         %子代个体的十进制转换,转为十进制      全部种群的变量
       gen=gen+1;                                             %代计数器增加
       %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号
       [Y, I]=max(ObjV);hold on;                                            %% 所有目标值中 最大的
       plot(variable(I), Y, 'ro');                              %%%%%%%%%%%%%%%% 散点图      variable(I)就是x  Y就是目标值
       trace(gen,1)=max(ObjV);                                %遗传算法性能跟踪,把当代的最优值放入trace矩阵的第一行第目前代数列
       trace(gen,2)=sum(ObjV)/length(ObjV);                   %把当代种群目标函数的均值,放入trace矩阵的第二行第目前代数列
    end
    variable=bs2rv(Chrom, FieldD);                            %最优个体的十进制转换,转回十进制,以便输出
    hold on;
    grid on;
    scatter3(variable(:,1),variable(:,2),ObjV,'b*');
    figure(2);
    plot(trace(:,1)); %把trace矩阵的第一列画出来(记录的是每一代的最优值)
    hold on;
    plot(trace(:,2),'-.');grid %把trace矩阵的第2列画出来(记录的是每一代种群目标函数均值)
    legend('解的变化','种群均值的变化')
     
    

    如果要进行应用,需要将上述中所有 shang() 改为你自己的函数

     

    展开全文
  • Hello,欢迎做客我的博客。 这里会介绍关于机器人的方方面面,希望对你有所帮助。...MATLAB的System Identification Toolbox(系统辨识工具箱),其中的Nonlinear Grey-Box Models(非线性灰箱建...

    Hello,欢迎做客我的博客。
    这里会介绍关于机器人的方方面面,希望对你有所帮助。
    今天的内容关于机器人动力学模型的参数辨识,这是在做机器人控制前的关键一步!

    工具和参考链接

    由于机器人动力学模型往往都是非线性的,这里用到的工具是:

    MATLAB的System Identification Toolbox(系统辨识工具箱),其中的Nonlinear Grey-Box Models(非线性灰箱建模工具),链接如下:

    System Identification Toolbox

    Nonlinear Grey-Box Models

    主要的参考示例:
    Modeling an Industrial Robot Arm

    1 机器人动力学模型

    在对模型参数进行辨识之前,首先需要对机器人进行建模,建模的方法通常是牛顿欧拉法或者拉格朗日方法。关于建模的部分,读者可以参考我之前的博客。如:
    机器人动力学建模之牛顿欧拉法推导

    此处,直接给出机器人的非线性动力学模型如下:
    x˙1=Kasinx2x˙2=Kbx32x˙3=uy1=x1y2=x2y3=x3 \begin{aligned} \dot{x}_1 &=K_a\sin{x_2}\\ \dot{x}_2 &=K_bx_3^2\\ \dot{x}_3 &=u\\ y_1 &= x_1\\ y_2 &= x_2\\ y_3 &= x_3 \end{aligned}
    其中,xx代表状态,uu代表输入,yy代表输出。
    KaK_aKbK_b为待辨识参数。

    2 辨识前的准备——采集实验数据

    在进行参数辨识前,我们需要采集输入和输出数据,即给定一组uu,然后记录系统的yy。通常,我们可以让uu是正弦信号,或者多个正弦信号的叠加,以获得更好的辨识效果。

    通常来说,我们需要通过实验去采集数据。

    在这里,我们的目的是介绍MATLAB系统辨识工具箱的用法,为了更加直观的看出系统辨识的效果,我们可以基于上述动力学模型生成一组数据,来检验MATLAB的系统辨识效果。

    数据生成程序:

    clc;
    clear all;
    close all;
    
    period = 0.01; % 注意这里是采样时间
    T = 10;
    
    % 参数设置
    Ka = 1.21;
    Kb = -0.6;
    
    x1 = 0;
    x2 = 0;
    x3 = 0;
    
    Input = [];
    Output = [];
    
    for t = 0:period:T
        % 给定输入,正弦函数
        u = sin(2*pi/10*t);
        % 系统动力学模型迭代
        x1_p = x1 + Ka*sin(x2)*period;
        x2_p = x2 + Kb*x3^2*period;
        x3_p = x3 + u*period;
        x1 = x1_p;
        x2 = x2_p;
        x3 = x3_p;
        % 输出
        y1 = x1;
        y2 = x2;
        y3 = x3;
        % 保存数据
        Input = [Input; u];
        Output = [Output; y1,y2,y3];
    end
    
    % 保存数据
    save('blogexample.mat', 'Input', 'Output');
    
    

    注意,这里我们设置了Ka=1.21K_a=1.21以及Kb=0.6K_b=-0.6。下面,我们可以看看MATLAB是否能辨识得到这组参数。

    3 系统辨识——MATLAB代码示例

    利用MATLAB进行系统辨识的步骤分为两步:

    • 定义模型文件(定义机器人动力学模型)
    • 设置辨识过程()

    3.1 模型文件

    程序如下:

    function [dx, y] = blogmodel_m(t, x, u, Ka, Kb, varargin)
    %% 函数的参数dx,y,t,x,u不可更改
    %% 函数参数Ka,Kb即为待辨识参数
      % 输出方程
      y = [x(1); x(2); x(3)];
      % 动力学模型(微分方程),dx即为x的导数
      dx = [Ka*sin(x(2)); ...
            Kb*x(3)^2; ...
            u];
    end
    

    3.2 定义辨识过程

    整个辨识过程主要用到四个函数:

    • idnlgrey:生成一个系统辨识对象(包含了系统模型,输入,状态,输出向量等等信息)
    • iddata:将数据打包为iddata格式,便于系统辨识工具箱使用
    • nlgreyest:系统辨识函数(主要函数,执行的就是优化参数的过程)
    • compare:对比真实输出和模型输出的结果

    下面是详细程序以及注释:
    程序如下:

    clc;
    clear all;
    close all;
    
    %% 配置模型
    FileName     = 'blogmodel_m';               % 模型文件.
    Order        = [3 1 3];                     % 输出、输入和状态向量的维数 [ny nu nx].
    Parameters   = [1, -1]';                    % 待辨识参数的初始值
    InitialStates = zeros(3, 1);                % 系统状态的初始值
    Ts            = 0;                          % Time-continuous system.
    % 生成一个系统辨识对象
    nlgr = idnlgrey(FileName, Order, Parameters, InitialStates, Ts, ...
                            'Name', 'Blog Example Model', ... % 定义对象的名称
                            'InputName',  {'Voltage'}', ... % 定义输入向量的名称
                            'InputUnit', {'V' }', ... % 定义输入向量的单位
                            'OutputName', {'Position' 'Velocity' 'Acceleration'}', ... % 定义输出向量的名称
                            'OutputUnit', {'m' 'm/s' 'm/s^2'}', ... % 定义输出向量的单位
                            'TimeUnit', 's'); % 定义时间的单位
    % 设置系统状态向量的名称和单位            
    nlgr = setinit(nlgr, 'Name', {'Position' 'Velocity' 'Acceleration'}');
    nlgr = setinit(nlgr, 'Unit', {'m' 'm/s' 'm/s^2'}');
    % 设置待辨识参数的名称
    nlgr = setpar(nlgr, 'Name', {'Ka : coeff 1' 'Kb : coeff2' });
    nlgr.Parameters(1).Fixed = false; % 将参数1设置为可变参数,默认即为可变参数,若设置为固定参数,则优化时,该参数不变
    nlgr.Parameters(1).Minimum = -10; % 设置参数1的下界为-10
    nlgr.Parameters(1).Maximum = 10;  % 设置参数1的上界为10
    % 打印出nlgr的信息
    present(nlgr)
    
    %% 导入数据
    dataset = load('blogexample.mat');
    z = iddata(dataset.Output, dataset.Input, 0.01, 'Name', 'Actual Data'); % 将数据打包为iddata格式,注意这里面的0.01代表了数据采样时间为0.01秒
    z.InputName = {'Voltage'}; % 定义输入向量的名称
    z.InputUnit = {'V' }; % 定义输入向量的单位
    z.OutputName = {'Position' 'Velocity' 'Acceleration'}; % 定义输出向量的名称
    z.OutputUnit = {'m' 'm/s' 'm/s^2'}; % 定义输出向量的单位
    z.Tstart = 0; % 定义起始时刻
    z.TimeUnit = 's'; % 定义时间单位
    
    present(z);
    
    %% 参数效果
    X0init = zeros(3,1);
    nlgr = setinit(nlgr, 'Value', num2cell(X0init)); % 设置状态向量的初始值
    figure(1)
    % 对比系统真实输出和模型输出(参数辨识前)
    compare(getexp(z, 1), nlgr, [], compareOptions('InitialCondition', X0init)); 
    
    %% 辨识系统参数
    nlgr = nlgreyest(nlgr, getexp(z, 1), nlgreyestOptions('Display', 'on')); % 系统辨识
    figure(2) 
    % 对比系统真实输出和模型输出(参数辨识后)
    compare(getexp(z, 1), nlgr, [], compareOptions('InitialCondition', X0init));
    
    

    4 系统辨识结果

    4.1 辨识前

    在这里插入图片描述

    4.2 辨识后

    在这里插入图片描述
    参数辨识的结果为:Ka=1.211K_a=1.211Kb=0.600K_b=-0.600。和我们生成数据时设置的Ka=1.21K_a=1.21以及Kb=0.6K_b=-0.6几乎完全相同。

    另外,从辨识结果也可以看到,参数辨识的效果相当只好。

    5 更多

    更多关于参数辨识过程的设置,比如优化算法,容许误差,可参考:
    nlgreyestOptions

    关于模型验证,参数辨识效果的展示,可参考:
    Model Validation

    关于本文的实例,大家可从下面链接中下载整理好的版本:
    MATLAB参数辨识的小例子

    展开全文
  • Ziegler-Nichols整定方法PID控制器参数整定经验公式(Z-N公式),针对带有纯时间延迟的一阶近似模型或频率响应数据设定(3)根据系统辨识进行PID参数整定辨识参数整定工具箱可参考matlab相关工具箱参考:https...
  • 日常积累3:模型辨识

    2020-11-12 15:21:14
    使用MATLAB的系统辨识工具箱的简单总结 一、数据获取 数据获取 进行模型辨识(如系统的传递函数辨识)前,需要获取系统的输入输出数据,基于这些数据进行辨识。为便于介绍,我们在SIMULINK中搭建一个一阶惯性环节...
  • 第18章线性网络与BP网络工具箱函数及其应用 18.1线性神经网络工具箱函数 18.1.1创建函数及其应用 18.1.2学习函数及其应用 18.1.3性能函数及其应用 18.1.4权积函数及其应用 18.1.5初始化函数 18.2BP神经网络...
  • 目前在学习机器学习方面的内容,涉及到系统辨识的问题。...我对MATLAB不太熟悉,目前知道它有多项式拟合的方法,也有ident工具箱,如何使用还不太明白。 /*想要实现的是DAD(DATA AS DEMONSTRATOR)算法*/
  • MATLAB函数工具箱提供了tfe函数用来实现基于经典谱估计的系统辨识。 调用方式: (1)Txy=tfe(x,y,NFFT,Fs,window) 使用welch平均周期图法,根据输入变量x和输出变量y来估计系统的传递函数。参数NFFT用来指定FFT运算...
  • MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与VC混合编程技术与实现.pdf MATLAB与VC混合编程技术在数控机床动态特性监测分析中的 Matlab与VC通用接口程序的...
  • 21.1.4MATLAB中小波函数工具箱 21.2小波分析在图像增强中应用 21.3基于小波的图像降噪和压缩 21.3.1小波的图像压缩技术 21.3.2小波的图像降噪技术 21.4小波的融合技术 21.5小波包在图像边缘检测中应用 21.6小...
  • MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与VC混合编程技术与实现.pdf MATLAB与VC混合编程技术在数控机床动态特性监测分析中的 Matlab与VC通用接口程序的...
  • MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与VC混合编程技术与实现.pdf MATLAB与VC混合编程技术在数控机床动态特性监测分析中的 Matlab与VC通用接口程序的...
  • MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与VC混合编程技术与实现.pdf MATLAB与VC混合编程技术在数控机床动态特性监测分析中的 Matlab与VC通用接口程序的...
  • pid算法的基础应用

    2019-05-05 13:17:06
    五一放假终于有空,先验证...本来之前以为可以通过matlab工具箱的系统辨识建立模型,然后通过工具箱自动调参 但是!自动调参更新完pid参数后,阶跃响应为负值 没办法,只能放弃这个操作了 瞎调参数 之后就随便...
  • https://www.zhihu.com/video/1108157632287854592说说我做了的尝试系统辨识建立模型本来之前以为可以通过matlab工具箱的系统辨识建立模型,然后通过工具箱自动调参但是!自动调参更新完pid参数后,阶跃响应为...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

matlab辨识参数工具箱

matlab 订阅