• matlab中的iddata函数的初步理解和使用程序举例


    matlab中的iddata函数的初步理解和程序举例

    一、iddata函数功能

    iddata函数常用于系统识别分析领域数据分析方面。该函数在时域或频域中,将用于系统识别的输入输出数据及其特性数据的生成对象数据类型。即,可以使用iddata函数封装要标识的系统的输入和输出测量数据。

    系统识别函数使用这些测量值来估计一个模型。模型检验函数使用输入测量值为模拟提供输入,模型检验函数使用输出测量值来比较,所估计的模型响应与原始数据的拟合程度如何。

    iddata对象可以包含单个测量集,也可以包含多个测量集。每组数据对应一个实验。

    这些对象具有以下特性,这些特性包含在对象特性:
    (1)数据可以在频域中,也可以在时域中。您可以将对象从一个域转换到另一个域。
    (2)在时域中,可以对数据进行均匀或非均匀采样。然而,要使用iddata对象进行估计,必须对数据进行均匀采样,并且必须在同一时刻记录每个实验的输入和输出数据。
    (3)可以指定数据特性,例如采样时间、开始时间、时间点、频率采样点和采样间行为。

    (4)可以提供标签和注释来区分和注释数据组件、实验和整个对象。

    二、语法

    2.1 语法1: data = iddata(y,u,Ts)

    data = iddata(y,u,Ts)创建一个iddata对象,该对象包括时域输出信号y,输入信号u。Ts指定实验数据的采样间隔时间。

    举例1:输入U和输出Y为列向量的情况
    clc
    clear
    close
    
    fs=500;
    dt=1/fs;
    t=0:dt:0.3;
    t=t';   % 转换为列向量
    U=10*sin(2*pi*10*t);
    Noise = 5*rand(length(U),1)-2.5;
    Y=U+Noise;
    Ts=dt;
    zsm_data = iddata(Y,U,Ts);
    figure(1)
    plot(t,U,t,Y)
    legend('U','Y')
    title('合成的U和Y的绘图')
    figure(2)
    plot(zsm_data)
    title('合成的U和Y经过iddata生成的数据的绘图')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    运行结果:

    图1 例1iddata函数生成的对象

    图2 例1运行iddata函数输入信号U和输出信号Y
    图3 例1合成的U和Y经过iddata生成的数据的绘图
    图3 例1合成的U和Y经过iddata生成的数据的绘图

    例子2:输入U和输出Y为行向量的情况
    clc
    clear
    close
    
    fs=500;
    dt=1/fs;
    t=0:dt:1;
    U=10*sin(2*pi*10*t);
    Noise = 5*rand(1,length(U))-2.5;
    Y=U+Noise;
    Ts=1
    zsm_data = iddata(Y,U,Ts);
    figure(1)
    plot(t,U,t,Y)
    legend('U','Y')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    运行结果:

    图4 例2iddata函数生成的对象
    图4 例2iddata函数生成的对象

    图5 例子2中iddata函数输入信号U和输出信号Y

    对比例子1和例子2可知:
    (1)data = iddata(y,u,Ts)中,y,u是列向量和行向量生成的data中y的个数和样本点数的结果有很大不同。
    (2)输入时候,y,u一般以列向量进行输入,比如例子1,样本点有151个,输入为u1,输出为y1.

    2.2 语法2 data = iddata(output,input,0.08,‘ExperimentName’,‘实验名称’)

    举例:

    clc
    clear
    close
    
    fs=500;
    dt=1/fs;
    t=0:dt:0.2;
    t=t';   % 转换为列向量
    U=10*sin(2*pi*10*t);
    Noise = 5*rand(length(U),1)-2.5;
    Y=U+Noise;
    Ts=dt;
    zsm_data = iddata(Y,U,Ts,'ExperimentName','电压测量实验1');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    图6 附带实验名称的iddta数据产生
    图6 附带实验名称的iddta数据产生

  • 相关阅读:
    美客多、Lazada养号技巧有什么?如何做?
    基于SSM的电子竞技管理平台
    DSPE-PEG-Azide DSPE-PED-N3 磷脂-聚乙二醇-叠氮脂质PFG
    面试题:在大型分布式系统中,给你一条 SQL,让你优化,你会怎么做?
    论文研究区域图的制作方法:ArcGIS
    offsetWidth / offsetHeight等
    《中国机器人产业发展报告(2022年)》发布:预计2022年中国机器人市场规模174亿美元,五年年均增长22%(免费领取报告)
    三农数据(1996-2020)五:农产品产量、就业人数、农村养老等
    网工内推 | 国企专场,网络运维工程师,华为/思科认证优先
    PgSQL-并行查询系列-介绍[译]
  • 原文地址:https://blog.csdn.net/qq_18937049/article/details/134271345