iddata
用于系统时域或频域识别的输入输出数据及其性质
描述
使用iddata
对象来封装要标识的系统的输入和输出测量数据。系统识别函数使用这些度量值来估计模型。模型验证函数使用输入度量值为模拟提供输入,使用输出度量值比较估计的模型响应与原始数据的吻合程度。
iddata
对象可以包含单个测量集或多个测量集。每组数据对应一个实验.对象具有以下特征,这些特征被编码在对象中属性:
数据可以在频域,也可以在时域。可以将对象从一个域转换到另一个域。
在时域内,可以对数据进行均匀采样或非均匀采样。使用
iddata
然而,估计对象的数据必须统一采样,每次实验的输入和输出数据必须在同一时刻记录。可以指定数据属性,例如采样时间、开始时间、时间点、频率采样点和样本间行为。
您可以提供标签和注释来区分和注释数据组件、实验和对象作为一个整体。
要访问对象属性,请使用点表示法。例如,假设您创建一个iddata
对象,使用命令sys = iddata (ym,嗯,Tsamp)
,在那里ym
是测量输出数据,嗯
是测量输入数据,和Tsamp
是采样时间。iddata
将这些变量存储在属性中InputData
,OutputData
,Ts
,分别。可以使用。查看或修改数据sys。InputData
,sys。OutputData
,sys。Ts
.有关使用点表示法查看和修改属性的示例,请参见查看和修改属性.
创建
语法
描述
使用时域数据
创建一个数据
= iddata (y
,u
,Ts
)iddata
对象,该对象包含时域输出信号y
和输入信号u
.Ts
指定实验数据的采样时间。
您可以使用iddata
创建一个多重实验iddata
通过指定对象y
而且u
作为细胞阵列。或者,你也可以创建一个单独的实验iddata
对象和使用合并(iddata)
将实验对象合并为一个多重实验iddata
对象。更多关于多重实验的信息iddata
对象,看到在命令行创建多实验数据.
使用频域数据
配置附加属性
使用名称-值对参数设置其他属性。指定数据
= iddata (___,名称,值
)名称,值
在前面语法中的任何输入参数组合之后。
输入参数
y
- - - - - -系统输出信号
列向量|矩阵|单元阵列|[]
来自系统的输出信号,指定为下列之一:
一个N-by-1向量对于单个输出系统,其中N观察的次数是多少
一个N——- - - - - -纽约矩阵为多输出系统,其中纽约输出通道的数量是多少
一个Ne多实验数据集的单元阵列,其中Ne实验数量和每个单元格是否包含一个实验的输出信号
[]
对于没有输出信号的系统,如只记录输入信号时
y
必须与输入数据在同一域中u
.如果数据在时域,y
而且u
必须记录在同一时间的瞬间。
如果您使用iddata
为评估对象,y
而且u
必须均匀取样。如果非均匀性很小,您可能能够将数据转换为具有足够完整性的一致采样集,使转换后的数据支持估计。有关您可以尝试的技术的更多信息,请参见interp1
而且MATLAB中缺失数据.
y
设置OutputData
财产的iddata
对象。
u
- - - - - -系统输入信号
列向量|矩阵|单元阵列|[]
向系统输入信号,指定为下列之一:
一个N-by-1向量对于单个输入系统,其中N观察的次数是多少
一个N——- - - - - -Nu矩阵为多输入系统,其中Nu输入通道的数量是多少
一个Ne多实验数据集的单元阵列,其中Ne实验数量和每个单元格是否包含一个实验的输入信号
[]
对于一个没有输入信号的系统,如时间序列
u
必须与输出数据在同一域中y
.如果数据在时域,y
而且u
必须记录在同一时间的瞬间。
如果您使用iddata
为评估对象,y
而且u
必须均匀取样。如果非均匀性很小,您可能能够将数据转换为具有足够完整性的一致采样集,使转换后的数据支持估计。有关您可以尝试的技术的更多信息,请参见interp1
而且MATLAB中缺失数据.
u
设置InputData
财产的iddata
对象。
Ts
- - - - - -样品时间
1
(默认)|标量|0
|[]
以属性指定的单位进行采样时间TimeUnit
,指定为以下其中之一:
一个标量时
y
而且u
均匀采样。0
对于频域中的连续时间数据。[]
当y
而且u
不统一采样,并且您在属性中指定时间值SamplingInstants
.对于非均匀采样,y
而且u
必须在时域内。
Ts
设置Ts
财产的iddata
对象。
属性
域
- - - - - -数据时频域
“时间”
(默认)|“频率”
数据时域或频域,指定为:
“时间”
—数据处于时间域“频率”
—数据处于频域
ExperimentName
- - - - - -每个数据集的名称
{“Exp1”;“Exp2”;…}
(默认)|单元阵列
类中包含的每个数据集的名称iddata
对象,指定为Ne-by-1的字符向量单元数组,其中Ne是实验的次数。每个单元格都包含相应实验的名称。例如,{“MyMeas1”;“MyMeas2”;“MyMeas3”}
包含三个实验的实验名称iddata
对象。
频率
- - - - - -频率值
列向量|单元阵列
频域数据的频率值,指定为:
一个N1的向量,N在单个实验中频率值的数量是多少
1 -Ne单元阵列,Ne为实验次数,每个单元格包含对应实验的频率向量。频率向量的单位必须相同。
FrequencyUnit
- - - - - -频域数据的频率单位
“rad / TimeUnit”
(默认)|“周期/ TimeUnit”
|“rad / s”
|“赫兹”
|“赫兹”
|“兆赫”
|“GHz”
|“转”
频域数据的频率单位,指定为以下之一:
单个实验的标量。
1 -Ne单元阵列,Ne是实验的次数。因为所有的
频率
向量必须有相同的单位,所有的值FrequencyUnit
一定是一样的。
更改此属性不会缩放或转换数据。修改属性只会更改现有数据的解释。
InputData
- - - - - -输入信号值
向量|矩阵|矩阵单元阵列
向系统输入信号值,指定为以下之一:
对于一个单一的实验,一个N——- - - - - -Nu矩阵,N数据样本的数量和Nu输入通道的数量是多少
对于多个实验,一个单元格数组包含Ne实验矩阵,Ne是实验的次数吗
当访问InputData
在命令行中,您可以使用缩写形式u
.例如,u1 =数据。InputData
相当于u1 = data.u
.
InputName
- - - - - -输入通道名称
{u1, u2,…}
(默认)|字符向量的单元格数组
输入通道名,指定为Nu——- - - - - -1单元阵列,Nu是输入通道的数量。
InputUnit
- - - - - -输入通道单元
单元阵列
输入通道单位,指定为Nu——- - - - - -1单元阵列,Nu是输入通道的数量。每个单元都包含相应输入通道的单位。
例子:{rad, rad / s的}
InterSample
- - - - - -Intersample行为
“zoh”
(默认)|“呸”
|“提单”
|字符向量的单元格数组
用于离散时间和连续时间之间转换的样本间行为,指定为字符向量或字符向量的单元格数组。对于每个实验,每个输入通道的可能值为:
zoh
-零阶保持器在样本之间保持一个分段恒定的输入信号。呸
-一阶保持器保持样本之间的分段线性输入信号。提单
—带宽限制行为指连续时间输入信号在奈奎斯特频率以上的功率为零。
对于单一输入通道的单一实验,InterSample
包含前一个列表中的一个值。对多个实验,InterSample
是一个Nu——- - - - - -Ne单元阵列,Nu输入通道的数量和Ne是实验的次数。每个单元格都包含与实验相关的行为值和该单元格所代表的输入通道。
的名字
- - - - - -数据集名称
' '(默认)|特征向量
数据集的名称,指定为字符向量。
例子:干燥机数据的
笔记
- - - - - -关于数据集的评论
' '(默认)|特征向量|单元阵列
关于数据集的注释,指定为一个字符向量,或对于多实验数据集,指定为一个Ne-by-1的字符向量单元数组,其中Ne是实验的次数。
例子:{'数据来自实验1';数据来自实验2'}
OutputData
- - - - - -输出信号值
向量|矩阵
从系统输出信号值,指定为以下之一:
对于一个单一的实验,一个N——- - - - - -Ny矩阵,N数据样本的数量和Ny输出通道的数量是多少
对于多个实验,一个单元格数组包含Ne实验矩阵,Ne是实验的次数吗
当访问OutputData
在命令行中,您可以使用缩写形式y
.例如,日元=数据。InputData
相当于日元= data.y
.
OutputName
- - - - - -输出通道名称
{y1, y2的;…}
(默认)|字符向量的单元格数组
输出通道名,指定为Ny——- - - - - -1单元阵列,Ny是输出通道的数量。
OutputUnit
- - - - - -输出通道单元
单元阵列
输出通道单位,指定为Ny——- - - - - -1单元阵列,Nu是输出通道的数量。每个单元都包含相应输入通道的单位。
例子:{rad, rad / s的}
期
- - - - - -输入信号周期
正
(默认)|双|向量|单元阵列|字符向量的单元格数组
输入信号的周期,指定为每次实验的双数。值为正
对于非周期输入信号或属性指定的单位中的周期TimeUnit
对于周期性输入信号。
对于单一输入通道的单一实验,
期
只包含一个值。对于多输入系统,
期
是一个Nu1的向量,Nu是输入通道的数量和k的周期k输入。对于综合实验室数据,
期
是1 -Ne单元阵列,Ne是实验次数,每个单元格包含对应实验周期的标量或向量。
TimeUnit
- - - - - -时间变量和采样时间的单位Ts
“秒”
(默认)|“纳秒”
|微秒的
|的毫秒
|“分钟”
|“小时”
|“天”
|“周”
|“月”
|“年”
时间变量和采样时间的单位,指定为标量。此属性适用于数据集中的所有实验。
更改此属性不会重新采样或转换数据。修改属性只会更改现有数据的解释。
Ts
- - - - - -样品时间
1
(默认)|积极的标量|0
|[]
|单元阵列
采样时间单位为TimeUnit
,指定为标量或单元格数组。对于每个实验,该值为以下值之一:
一个标量,当
y
而且u
是均匀采样0
对于频域中的连续时间数据[]
当y
而且u
是在时域内非均匀采样的,因为SamplingInstants
属性为此类数据设置时间值。
在一个实验中,Ts
是一个标量。对于multiexperiment数据,Ts
是1 -Ne单元阵列,Ne为实验次数,每个单元格包含对应实验的采样时间。
对于频域数据,该软件使用Ts
解释数据。
如果
Ts
为0时,软件将输入和输出解释为对应信号的连续时间傅里叶变换(CTFTs)。如果
Ts
为标量时,该软件将输入和输出解释为对应信号的离散时间傅立叶变换(DTFTs)Ts
作为示例。
Tstart
- - - - - -时域数据的开始时间
0
(默认)|标量|单元阵列
时域数据的开始时间,指定为:
单个实验的标量
1 -Ne用于多次实验的细胞阵列,其中Ne实验数和每个单元格是否包含相应实验的开始时间
用户数据
- - - - - -额外的评论
[]
(默认)|任何MATLAB数据类型
数据集的附加注释,指定为任何MATLAB数据类型。
对象的功能
一般来说,任何适用于系统识别数据的函数都适用于iddata
对象。这些函数一般有三种类型。
既操作又返回的函数
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(数据、过滤);
执行分析处理的函数
iddata
对象、创建图或返回特定的参数或值,使您能够分析数据并确定用于估计的输入。中的数据的函数
iddata
用于估计、模拟和验证模型的对象允许您创建动态模型,并评估模型响应与验证数据的匹配程度。下面的列表包含您可以使用的函数的一个代表性子集
iddata
对象。
数据可视化
情节 |
绘制输入输出通道iddata 对象 |
数据选择
getexp |
具体实验来自多个实验数据集 |
合并(iddata) |
将数据集合并到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’
到第一个也是唯一的输入通道。有关命名通道的更多信息,请参见命名、添加和删除数据通道.
图数据。
情节(数据)
相邻的图显示输出数据和输入数据。
时间序列数据
创建一个iddata
对象的时间序列数据。时间序列数据没有输入通道。
加载数据集的输出通道,并创建一个iddata
对象,其采样时间为0.08秒。
负载dryer2_data输出data = iddata(输出,[],0.08)
data =具有1000个样本的时域数据集。输出单位(如果指定)y1
图数据。
情节(数据)
您可以使用数据
对于时间序列模型估计。
频域数据
创建和检查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
对象,使用点表示法。更改采样时间属性Ts
0.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
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。