主要内容

iddata

在时域或频域内,系统辨识之输入输出数据及其性质

描述

使用iddata对象封装要识别的系统的输入和输出测量数据。系统识别功能使用这些测量值来估计模型。模型验证函数使用输入测量值为模拟提供输入,使用输出测量值比较估计的模型响应与原始数据的吻合程度。

iddata对象可以包含一个或多个度量集。每一组数据对应一个实验.对象具有以下特征,这些特征在对象中编码属性

  • 数据可以在频域,也可以在时域。您可以将对象从一个域转换到另一个域。

  • 在时域中,数据可以是均匀采样或非均匀采样。使用iddata然而,对于估计对象,数据必须进行均匀采样,并且每次实验的输入和输出数据必须同时记录。

  • 您可以指定数据属性,例如样本时间、开始时间、时间点、频率样本点和样本间行为。

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

创建

描述

例子

数据= iddata (yTs创造一个iddata对象,该对象包含时域输出信号y和输入信号Ts指定实验数据的采样时间。

你可以用iddata创造一个多重实验iddata通过指定对象y作为单元阵列。或者,您可以创建单个实验iddata对象和使用合并(iddata)将对象合并为一个多重实验iddata对象更多关于多重实验的信息iddata对象,看到在命令行中创建多个实验数据

例子

数据= iddata (y,[],Ts创造一个iddata对象用于时间序列数据。该对象包含一个时域输出信号y和一个空的输入信号[]Ts指定实验数据的采样时间。

例子

数据= iddata (yTs“频率”,W.创造一个iddata对象,该对象包含频域数据。W.设定iddata财产频率变成频率矢量。通常情况下,y为时域信号的离散傅里叶变换。

例子

数据= iddata (___名称、值使用名称-值对参数设置其他属性。具体说明名称、值在前面语法中的任何输入参数组合之后。

输入参数

全部展开

系统的输出信号,指定为下列之一:

  • 一个N单个输出系统的-by-1向量,其中N是观察人数

  • 一个N——- - - - - -纽约多输出系统矩阵纽约是输出通道的数量吗

  • 一个NE.用于多实验数据集的单元阵列,其中NE.是实验的数量和每个单元包含一个实验的输出信号

  • []对于没有输出信号的系统,例如仅记录输入信号时

y必须在与输入数据相同的域中.如果数据在时域,y必须在同一时刻被记录。

如果你使用iddata为评估对象,y必须统一采样。如果不均匀性很小,则可以能够将数据转换为均匀采样的集,具有足够的完整性,即转换的数据支持估计。万博1manbetx有关您可以尝试的技术的更多信息,请参阅interp1MATLAB中的缺失数据

y设定OutputData财产的iddata对象。

系统的输入信号,指定为下列之一:

  • 一个N单个输入系统的-by-1向量,其中N是观察人数

  • 一个N——- - - - - -N用于多输入系统的矩阵,其中N是输入通道的数量吗

  • 一个NE.用于多实验数据集的单元阵列,其中NE.实验的数量和每个单元格包含一个实验的输入信号

  • []对于没有输入信号的系统,如时间序列

必须与输出数据在同一个域中y.如果数据在时域,y必须在同一时刻被记录。

如果你使用iddata为评估对象,y必须统一采样。如果不均匀性很小,则可以能够将数据转换为均匀采样的集,具有足够的完整性,即转换的数据支持估计。万博1manbetx有关您可以尝试的技术的更多信息,请参阅interp1MATLAB中的缺失数据

设定InputData财产的iddata对象。

按属性指定的单位采样时间TimeUnit,指定为下列其中之一:

  • 标量y均匀采样。

  • 0.对于频域中的连续时间数据。

  • []y不是均匀采样,你在属性中指定时间值Samplinginstants..对于非均匀抽样,y一定是在时域。

Ts设定Ts财产的iddata对象。

属性

全部展开

数据时域或频域,指定为:

  • '时间'—数据为时间域

  • “频率”—数据在频域

包含在的每个数据集的名称iddata对象,指定为NE.-by-1字符向量单元格数组,其中NE.为实验的次数。每个单元格包含相应实验的名称。例如,{“MyMeas1”;“MyMeas2”;“MyMeas3”}包含三个实验的实验名称iddata对象。

频域数据的频率值,指定为:

  • 一个N1的向量,N是单个实验中频率值的数目

  • 1 -NE.单元阵列,NE.为实验次数,每个单元格包含对应实验的频率向量。频率向量必须是相同的单位。

频域数据的频率单位,指定为以下之一:

  1. 单个实验的标量。

    1 -NE.单元阵列,NE.为实验的次数。因为所有人频率向量必须有相同的单位,所有的值频率单位肯定是一样的。

更改此属性不会缩放或转换数据。修改属性仅更改现有数据的解释。

系统的输入信号值,指定为下列值之一:

  • 对于单个实验,一个N——- - - - - -N矩阵,N数据样本的数量是否和N是输入通道的数量吗

  • 对于多个实验,一个包含NE.实验矩阵,NE.是实验的次数

访问时InputData从命令行中,您可以使用速记表单. 例如u1 =数据。InputData相当于u1=data.u

输入通道名称,指定为N——- - - - - -1单元阵列,N是输入通道的数量。

输入通道单元,指定为一个N——- - - - - -1单元阵列,N是输入通道的数量。每个单元包含相应输入通道的单位。

例子:{rad, rad / s的}

离散时间和连续时间之间转换的样本间行为,指定为字符向量或字符向量的单元数组。对于每个实验,每个输入通道的可能值为:

  • zoh- 零阶保持在样本之间维护分段恒定的输入信号。

  • -一阶保持在采样之间保持分段线性输入信号。

  • bl—限带行为是指连续时间输入信号在奈奎斯特频率以上的功率为零。

对于单个输入通道的单个实验,样本间包含上一个列表中的其中一个值。对于多个实验,样本间是一个N——- - - - - -NE.单元阵列,N是输入通道数和NE.为实验的次数。每个单元格包含与该单元格所代表的实验和输入通道相关联的行为值。

数据集的名称,指定为字符向量。

例子:干燥机数据的

关于数据集的评论,指定为字符向量,或者对于多分体数据集,NE.-by-1字符向量单元格数组,其中NE.为实验的次数。

例子:{'数据来自实验1';数据来自实验2'}

系统的输出信号值,指定为以下值之一:

  • 对于单个实验,一个N——- - - - - -Ny矩阵,N数据样本的数量是否和Ny是输出通道的数量吗

  • 对于多个实验,一个包含NE.实验矩阵,NE.是实验的次数

访问时OutputData从命令行中,您可以使用速记表单y. 例如日元=数据。InputData相当于y1=数据。y

输出通道名称,指定为Ny——- - - - - -1单元阵列,Ny为输出通道的数量。

输出通道单元,指定为Ny——- - - - - -1单元阵列,N为输出通道的数量。每个单元包含相应输入通道的单位。

例子:{rad, rad / s的}

输入信号的周期,在每次实验中指定为双精度。其值为对于非周期性输入信号或属性指定的单位的期间TimeUnit对于定期输入信号。

  • 对于单个输入通道的单个实验,包含单个值。

  • 对于多输入系统,是一个N1的向量,N是输入通道的数量和数量K.进入含有句号K.输入。

  • 对于多个实验数据,是一个1-by-NE.单元阵列,NE.是实验的数量,并且每个细胞包含相应实验的标量或周期向量。

以指定的单位表示时域数据的时间值TimeUnit,指定为:

  • 一个N1的向量,N是数据点的数量吗

  • 1 -NE.单元阵列,NE.为实验次数,每个单元格包含对应实验的采样瞬间。

中的值Samplinginstants.可以是均匀的或不均匀的。如果您指定了Ts属性时,该软件计算统一的时间值Samplinginstants.Ts启动.如果您有不均匀的采样点,请指定时间值Samplinginstants.. 然后,软件设置Ts属性设置为空。估计函数不支持非均匀采样。万博1manbetx

时间变量和样本时间的单位,指定为标量。此属性适用于数据集中的所有实验。

更改此属性不会重新确定或转换数据。修改属性仅更改现有数据的解释。

采样时间的单位为TimeUnit,指定为标量或单元格数组。对于每个实验,该值为以下值之一:

  • 标量,何时y是统一的抽样

  • 0.对于频域的连续时间数据

  • []y是非均匀的采样和时域,因为Samplinginstants.属性设置此类数据的时间值。

对于一个单一的实验,Ts是一个标量。对于多生水平数据,Ts是一个1-by-NE.单元阵列,NE.为实验次数,每个单元格包含相应实验的采样时间。

对于频域数据,软件使用Ts来解释数据。

  • 如果Ts是0,软件将输入和输出作为相应信号的连续时间傅里叶变换(CTFT)解释为输入和输出。

  • 如果Ts是标量,软件解释输入并输出相应信号的离散时间傅里叶变换(DTFT)Ts作为采样时间。

时域数据的开始时间,指定为:

  • 单个实验的标量

  • 1 -NE.用于多个实验的单元阵列,其中NE.是实验数,每个单元格包含相应实验的开始时间

数据集上的附加注释,指定为任何MATLAB数据类型。

目标函数

一般来说,任何适用于系统识别数据的功能都适用于iddata对象这些函数一般有三种类型。

  1. 两者都运行和返回的功能iddata对象使您可以操纵和处理iddata物体。

    • 使用fft传输线将现有的iddata对象在时间域和频率域之间来回移动。例如:

      datafd = fft(数据);datatd =传输线(Dataf);

    • 使用合并(iddata)合并iddata对象转换为单个的iddata包含多个实验的对象。从多重实验中提取实验iddata对象,使用getexp. 例如:

      data123 =合并(data1、data2 data3);data2 = getexp (data123 2);

      有关更详细的示例,请参见提取和建模特定的数据段

    • 使用预处理功能,如德特伦德idfilt过滤数据iddata对象,并删除错误数据。例如:

      data_d =去趋势(数据);data_f = idfilt(数据、过滤);

  2. 进行分析处理的功能iddata对象并创建绘图或返回特定的参数或值,使您可以分析数据并确定用于估计的输入。

  3. 中使用数据的函数iddata通过评估、模拟和验证模型的对象,可以创建动态模型,并评估模型响应与验证数据的匹配程度。

    • 使用估计函数,例如党卫军特遣部队评估具有特定结构的模型。

    • 使用验证功能,例如相比模拟模拟估算模型,并将模拟结果与验证数据和其他模型进行比较。

    以下列表包含可用于的函数的代表性子集iddata物体。

全部展开

情节 绘制的输入和输出通道iddata目的
getexp 来自多个实验数据集的特定实验
合并(iddata) 将数据集合并到iddata对象中
德特伦德 从中包含的时域信号中减去偏移量或趋势iddata对象
retrend 向存储的时域数据信号添加偏移量或趋势iddata对象
idfilt 使用用户定义的通带、常规筛选器或巴特沃斯筛选器筛选数据
iddata对象中的不同信号
错误数据 重建丢失的输入和输出数据
idresamp. 通过抽取或插值重新采样时域数据
fft 使改变iddata对象到频域数据
传输线 将iddata对象从频率域转换为时间域
realdata 确定是否iddata基于实际值的信号
延迟 根据数据估计时间延迟(死区时间)
是真实的 确定模型参数或数据值是否真实
冲动 非参数脉冲响应估计
Pexcit. 输入信号的激励水平
反馈 识别可能的反馈数据
埃特菲 估计经验传递函数和周期图
spafdr 估计频率响应和频谱使用频谱分析与频率相关的分辨率
水疗中心 估计频率响应与固定的频率分辨率使用频谱分析
iddataplotoptions. 选项集情节在绘制包含在iddata目的
党卫军 利用时域或频域数据估计状态空间模型
特遣部队 传递函数估计
AR. 对于标量时间序列,估计AR模型或ARI模型的参数
模拟 模拟辨识模型的响应
Findstates. 模型初始状态估计
相比 比较已确定的模型输出和测量输出
预测 预测K步超前模型输出
善良 检验数据与参考数据的拟合优度,以便对识别出的模型进行分析和验证
过程 使用时间或频率数据估计过程模型
渣油 计算和测试残差

例子

全部崩溃

创建一个iddata对象使用单输入/单输出(SISO)时域数据。输入和输出各包含1000个采样,采样时间为0.08秒。

负载dryer2_data输出输入;数据= IDDATA(输出,输入,0.08)
data = 1000个样本的时域数据集。采样时间:0.08秒输出单元(如果指定)Y1输入单元(如果指定)U1

软件分配默认的通道名称“日元”到第一个也是唯一的输出通道。当输出信号包含多个通道时,软件分配默认名称‘y1’、‘y2’、…、‘yn’. 同样,软件会指定默认通道名称‘u1’到第一个也是唯一的输入通道。有关命名通道的更多信息,请参见命名、添加和删除数据通道

图数据。

情节(数据)

图中包含2个轴。标题为y1的轴1包含一个类型为line的对象。这个对象表示数据。标题为u1的轴2包含一个类型为line的对象。此对象表示数据。

相邻的图显示输出数据和输入数据。

创建一个iddata对象从时间序列数据中删除。时间序列数据没有输入通道。

加载数据集的输出通道,并创建iddata对象的采样时间为0.08秒。

负载dryer2_data输出data = iddata(输出,[],0.08)
data = 1000个样本的时域数据集。输出单位(如果指定)y1

图数据。

情节(数据)

图包含轴。带标题Y1的轴包含类型的物体。这个对象表示数据。

你可以用数据用于时间序列模型估计。

创建并检查iddata来自复值频域输入输出数据的对象。将对象转换为时域。

输入和输出数据有时表示为时域输入输出信号的傅里叶变换形式。您可以将此数据封装在频域中iddata对象。

加载由复值输入-输出频域数据组成的数据y、频率向量W.,以及采样时间Ts

负载demofr1.yW.Ts

创建频域iddata目的data_fr

data_fr=iddata(Y,U,Ts,“频率”W)
data_fr =响应频率为501的频域数据集。频率范围:0 ~ 31.416 rad/seconds采样时间:0.1秒输出单位(如果指定)y1输入单位(如果指定)u1

检查属性。频域iddata对象包括特定于频率的属性,例如频率对于频率向量和频率单位频率的单位。相比之下,时域iddata对象包括特定于时间的属性,例如启动Samplinginstants.对于时域数据。

获取(数据\u fr)
ans=带字段的结构:Domain: 'Frequency' Name: " OutputData: [501x1 double] y: 'Same as OutputData' OutputName: {'y1'} OutputUnit: {"} InputData: [501x1 double] u: 'Same as InputData' InputName: {'u1'} InputUnit: {"} Period: Inf InterSample: 'zoh' Ts: 0.1000 FrequencyUnit: 'rad/TimeUnit' Frequency: [501x1 double] TimeUnit: 'seconds' ExperimentName: 'Exp1'备注:{}用户数据:[]

将频率属性的内容赋给变量F

F = data_fr.Frequency;

获取数据的频率单位。房地产TimeUnit设置采样时间的单位。

频率=数据频率单位
频繁='rad / timeUnit'
timeu = data_fr。TimeUnit
timeu =“秒”

转换data_fr使用傅里叶逆变换函数返回时域传输线

数据\u t=ifft(数据\u fr)
data_t =带有1000个样本的时域数据集。采样时间:0.1秒输出单元(如果指定)Y1输入单元(如果指定)U1
get (data_t)
ans=带字段的结构:域名:'time'名称:''outputdata:[1000x1 double] y:'与outputdata'outputname相同:{'y1'} OutputUnit:{''} inputData:[1000x1 double] u:'与inputdata'InputName相同:{'U1'} InputUnit:{''}周期:INF INTESAMPLE:'ZOH'TS:0.1000 TSTART:[] SAMPLPLINGSTANTS:[] TIMEUNIT:'秒'诊断名称:'EXP1'注意:{} USERDATA:[]

视图的属性iddata对象。在对象创建期间和之后修改属性。

加载输入和输出数据。

负载dryer2_data输入输出

创建一个iddata对象。

数据= IDDATA(输出,输入,0.08)
data = 1000个样本的时域数据集。采样时间:0.08秒输出单元(如果指定)Y1输入单元(如果指定)U1

视图的所有属性iddata对象。

获取(数据)
ans=带字段的结构:域名:'time'名称:''outputdata:[1000x1 double] y:'与outputdata'outputname相同:{'y1'} OutputUnit:{''} inputData:[1000x1 double] u:'与inputdata'InputName相同:{'U1'} InputUnit:{''}句号:inf Intersample:'zoh'ts:0.0800 tstart:[] samplinginstants:[1000x0 double] timeUnit:'秒'诊断名称:'exp1'注意:{} userdata:[]

可以在创建时指定属性iddata对象使用名称-值对参数。创建一个iddata对象,但将实验名称从其默认设置更改为干燥器2

数据= IDDATA(输出,输入,0.08,“ExperimentName”'干酪2'
实验干燥器2。包含1000个样本的时域数据集。采样时间:0.08秒输出单元(如果指定)Y1输入单元(如果指定)U1

更改现有对象的特性值的步骤iddata对象,使用点表示法。更改样本时间属性Ts0.05秒。

data.ts = 0.05
实验干燥器2。包含1000个样本的时域数据集。采样时间:0.05秒输出单元(如果指定)Y1输入单元(如果指定)U1

属性名称不区分大小写。此外,如果前几个字母唯一标识属性,则无需键入整个属性名称。

数据。经验值=“2015年1月Dryer2”
数据=实验干燥器2 2015年1月.Time域数据设置,具有1000个样本。采样时间:0.05秒输出单元(如果指定)Y1输入单元(如果指定)U1

你可以用data.y简写data.OutputData来访问输出值,或使用data.u简写数据。InputData以访问输入值。

y_data = data.y;u_data = data.u;
之前介绍过的R2006a