主要内容

iddata

用于系统时域或频域识别的输入输出数据及其性质

描述

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

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

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

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

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

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

要访问对象属性,请使用点表示法。例如,假设您创建一个iddata对象,使用命令sys = iddata (ym,嗯,Tsamp),在那里ym是测量输出数据,是测量输入数据,和Tsamp是采样时间。iddata将这些变量存储在属性中InputDataOutputData,Ts,分别。可以使用。查看或修改数据sys。InputDatasys。OutputData,sys。Ts.有关使用点表示法查看和修改属性的示例,请参见查看和修改属性

创建

描述

使用时域数据

例子

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

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

例子

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

使用频域数据

例子

数据= iddata (yuTs“频率”,W创建一个iddata包含频域数据的对象。W设置iddata财产频率到一个频率的向量。通常情况下,y而且u为时域信号的离散傅里叶变换。

配置附加属性

例子

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

输入参数

全部展开

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

  • 一个N-by-1向量对于单个输出系统,其中N观察的次数是多少

  • 一个N——- - - - - -纽约矩阵为多输出系统,其中纽约输出通道的数量是多少

  • 一个Ne多实验数据集的单元阵列,其中Ne实验数量和每个单元格是否包含一个实验的输出信号

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

y必须与输入数据在同一域中u.如果数据在时域,y而且u必须记录在同一时间的瞬间。

如果您使用iddata为评估对象,y而且u必须均匀取样。如果非均匀性很小,您可能能够将数据转换为具有足够完整性的一致采样集,使转换后的数据支持估计。有关您可以尝试的技术的更多信息,请参见interp1而且MATLAB中缺失数据

y设置OutputData财产的iddata对象。

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

  • 一个N-by-1向量对于单个输入系统,其中N观察的次数是多少

  • 一个N——- - - - - -Nu矩阵为多输入系统,其中Nu输入通道的数量是多少

  • 一个Ne多实验数据集的单元阵列,其中Ne实验数量和每个单元格是否包含一个实验的输入信号

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

u必须与输出数据在同一域中y.如果数据在时域,y而且u必须记录在同一时间的瞬间。

如果您使用iddata为评估对象,y而且u必须均匀取样。如果非均匀性很小,您可能能够将数据转换为具有足够完整性的一致采样集,使转换后的数据支持估计。有关您可以尝试的技术的更多信息,请参见interp1而且MATLAB中缺失数据

u设置InputData财产的iddata对象。

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

  • 一个标量时y而且u均匀采样。

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

  • []y而且u不统一采样,并且您在属性中指定时间值SamplingInstants.对于非均匀采样,y而且u必须在时域内。

Ts设置Ts财产的iddata对象。

属性

全部展开

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

  • “时间”—数据处于时间域

  • “频率”—数据处于频域

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

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

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

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

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

  1. 单个实验的标量。

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

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

向系统输入信号值,指定为以下之一:

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

  • 对于多个实验,一个单元格数组包含Ne实验矩阵,Ne是实验的次数吗

当访问InputData在命令行中,您可以使用缩写形式u.例如,u1 =数据。InputData相当于u1 = data.u

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

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

例子:{rad, rad / s的}

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

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

  • -一阶保持器保持样本之间的分段线性输入信号。

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

对于单一输入通道的单一实验,InterSample包含前一个列表中的一个值。对多个实验,InterSample是一个Nu——- - - - - -Ne单元阵列,Nu输入通道的数量和Ne是实验的次数。每个单元格都包含与实验相关的行为值和该单元格所代表的输入通道。

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

例子:干燥机数据的

关于数据集的注释,指定为一个字符向量,或对于多实验数据集,指定为一个Ne-by-1的字符向量单元数组,其中Ne是实验的次数。

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

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

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

  • 对于多个实验,一个单元格数组包含Ne实验矩阵,Ne是实验的次数吗

当访问OutputData在命令行中,您可以使用缩写形式y.例如,日元=数据。InputData相当于日元= data.y

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

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

例子:{rad, rad / s的}

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

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

  • 对于多输入系统,是一个Nu1的向量,Nu是输入通道的数量和k的周期k输入。

  • 对于综合实验室数据,是1 -Ne单元阵列,Ne是实验次数,每个单元格包含对应实验周期的标量或向量。

所指定的单位的时域数据的时间值TimeUnit指定为:

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

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

中的值SamplingInstants可以是均匀的或不均匀的。如果指定Ts属性时,该软件计算一致时间值SamplingInstantsTs而且Tstart.如果你有不均匀的采样点,指定时间值SamplingInstants.然后该软件设置Ts属性是空的。估计函数不支持非均匀抽样。

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

更改此属性不会重新采样或转换数据。修改属性只会更改现有数据的解释。

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

  • 一个标量,当y而且u是均匀采样

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

  • []y而且u是在时域内非均匀采样的,因为SamplingInstants属性为此类数据设置时间值。

在一个实验中,Ts是一个标量。对于multiexperiment数据,Ts是1 -Ne单元阵列,Ne为实验次数,每个单元格包含对应实验的采样时间。

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

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

  • 如果Ts为标量时,该软件将输入和输出解释为对应信号的离散时间傅立叶变换(DTFTs)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用于估计、模拟和验证模型的对象允许您创建动态模型,并评估模型响应与验证数据的匹配程度。

    • 使用诸如党卫军而且特遣部队估计具有特定结构的模型。

    • 使用验证函数,例如比较而且sim卡模拟估计模型,并将模拟输出与验证数据和其他模型进行比较。

    下面的列表包含您可以使用的函数的一个代表性子集iddata对象。

全部展开

情节 绘制输入输出通道iddata对象
getexp 具体实验来自多个实验数据集
合并(iddata) 将数据集合并到iddata对象中
去趋势 从包含的时域信号中减去偏移或趋势iddata对象
retrend 中存储的时域数据信号添加偏移量或趋势iddata对象
idfilt 使用用户定义的通带、通用过滤器或巴特沃思过滤器过滤数据
diff iddata对象中的差异信号
错误数据 重构丢失的输入和输出数据
idresamp 通过抽取或插值重新采样时域数据
fft 的快速傅里叶变换(FFTiddata对象
传输线 将iddata对象从频率域转换为时域
realdata 确定是否iddata是基于实值信号的
延迟 根据数据估计时间延迟(死时间)
伊斯雷尔 确定模型参数或数据值是否真实
冲动 非参数脉冲响应估计
pexcit 输入信号的激励水平
反馈 识别可能的反馈数据
etfe 估计经验传递函数和周期图
spafdr 使用与频率相关的光谱分析估计频率响应和频谱
水疗中心 用频谱分析估计固定频率分辨率的频率响应
iddataPlotOptions 选项设置情节控件中包含的数据绘图时iddata对象
党卫军 使用时域或频域数据估计状态空间模型
特遣部队 估计传递函数模型
基于“增大化现实”技术 在识别标量时间序列的AR模型或ARI模型时估计参数
sim卡 模拟识别模型的响应
findstates 估计模型的初始状态
比较 比较确定的模型输出和测量输出
预测 预测识别的模型k步进输出
goodnessOfFit 试验数据与参考数据的拟合优度,用于分析和验证所识别的模型
过程 使用时域或频域数据估计过程模型
渣油 计算和测试残差

例子

全部折叠

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

负载dryer2_data输出输入;data = iddata(输出,输入,0.08)
data =具有1000个样本的时域数据集。采样时间:0.08秒输出单位(如指定)y1输入单位(如指定)u1

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

图数据。

情节(数据)

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

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

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

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

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

图数据。

情节(数据)

图中包含一个axes对象。标题为y1的axes对象包含一个类型为line的对象。该对象表示数据。

您可以使用数据对于时间序列模型估计。

创建和检查iddata对象从复值频域输入输出数据中获取。将对象转换到时间域。

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

加载由复值输入输出频域数据组成的数据U而且Y、频率向量W,采样时间Ts

负载demofr1UYWTs

创建一个频域iddata对象data_fr

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

检查属性。频域iddata对象包括特定于频率的属性,例如频率对于频率向量和FrequencyUnit频率的单位。相比之下,时域iddata对象包括特定于时间的属性,例如Tstart而且SamplingInstants时域数据。

get (data_fr)
ans =结构体字段:域:'Frequency'名称:" OutputData: [501x1 double] y: 'Same as OutputData' OutputName: {'y1'} OutputUnit: {"} InputData: [501x1 double] u: 'Same as InputData' InputName: {'u1'} InputUnit:{"}周期:Inf InterSample: 'zoh' Ts: 0.1000 FrequencyUnit: 'rad/TimeUnit'频率:[501x1 double] TimeUnit: 'seconds' ExperimentName: 'Exp1'注释:{}UserData: []

将frequency属性的内容分配给变量F

F = data_fr.Frequency;

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

frequ = data_fr。FrequencyUnit
frequ = ' rad / TimeUnit '
timeu = data_fr。TimeUnit
timeu =“秒”

转换data_fr通过使用傅里叶反变换函数回到时域传输线

data_t =传输线(data_fr)
data_t =具有1000个样本的时域数据集。采样时间:0.1秒输出单位(如指定)y1输入单位(如指定)u1
get (data_t)
ans =结构体字段:域:'Time'名称:" OutputData: [1000x1 double] y: 'Same as OutputData' OutputName: {'y1'} OutputUnit: {"} InputData: [1000x1 double] u: 'Same as InputData' InputName: {'u1'} InputUnit:{"}周期:Inf InterSample: 'zoh' Ts: 0.1000 Tstart: 0.1000 SamplingInstants: [1000x1 double] TimeUnit: 'seconds' ExperimentName: 'Exp1'注释:{}UserData: []

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

加载输入和输出数据。

负载dryer2_data输入输出

创建一个iddata对象。

data = iddata(输出,输入,0.08)
data =具有1000个样本的时域数据集。采样时间:0.08秒输出单位(如指定)y1输入单位(如指定)u1

属性的所有属性iddata对象。

(数据)
ans =结构体字段:域:'Time'名称:" OutputData: [1000x1 double] y: 'Same as OutputData' OutputName: {'y1'} OutputUnit: {"} InputData: [1000x1 double] u: 'Same as InputData' InputName: {'u1'} InputUnit:{"}周期:Inf InterSample: 'zoh' Ts: 0.0800 Tstart: 0.0800 SamplingInstants: [1000x1 double] TimeUnit: 'seconds' ExperimentName: 'Exp1'注释:{}UserData: []

对象时可以指定属性iddata对象,使用名称-值对参数。创建一个iddata对象从相同的数据输入,但改变实验名称从其默认设置为Dryer2

data = iddata(输出、输入0.08,“ExperimentName”“Dryer2”
数据=实验干燥机2。具有1000个样本的时域数据集。采样时间:0.08秒输出单位(如指定)y1输入单位(如指定)u1

对象的属性值iddata对象,使用点表示法。更改采样时间属性Ts0.05秒。

数据。Ts= 0.05
数据=实验干燥机2。具有1000个样本的时域数据集。采样时间:0.05秒输出单位(如指定)y1输入单位(如指定)u1

属性名不区分大小写。另外,如果前几个字母唯一标识属性,则不需要输入整个属性名。

数据。经验值=“2015年1月Dryer2”
数据=实验干燥器2 2015年1月。具有1000个样本的时域数据集。采样时间:0.05秒输出单位(如指定)y1输入单位(如指定)u1

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

y_data = data.y;u_data = data.u;

版本历史

之前介绍过的R2006a

Baidu
map