表示时间和频域的数据使用iddata
对象
iddata构造函数
要求建造一个iddata对象
构建一个iddata
对象,你必须已经导入数据到MATLAB®工作区中描述MATLAB的工作区中表示数据。
构建一个iddata时域数据的对象
使用下面的语法来创建一个时域iddata
对象数据
:
data = iddata (y、u, Ts)
您还可以指定额外的属性,如下所示:
data = iddata (y, u, Ts Property1, Value1,…,“PropertyN”,家)
关于访问对象属性的更多信息,请参阅属性。
在这个例子中,Ts
样品时间,之间的时间间隔,或连续的数据样本。对于均匀采样数据,Ts
是一个标量值等于实验的样品时间。默认时间单位为秒,但是你可以设置一个新值使用TimeUnit
财产。更多信息iddata
时间属性,看到修改时间和频率向量。
对于非均匀抽样数据,指定Ts
作为[]
,并设置的值SamplingInstants
房地产作为一个列向量包含个体时间值。例如:
data = iddata (y, u, [] SamplingInstants, TimeVector)
在哪里TimeVector
表示一个向量的时间值。
请注意
您可以修改属性SamplingInstants
通过设置一个新的向量的长度等于数据样本的数量。
表示时间序列数据,使用下面的语法:
ts_data = iddata (y, [], Ts)
在哪里y
是输出数据,[]
表示空的输入数据,Ts
样品时间。
下面的例子显示了如何创建一个iddata
对于对象使用输入/输出)的数据dryer2.mat
。输入和输出都包含1000个样本的样品时间0.08
第二。
% y2负载输入u2和输出。负载dryer2%创建iddata对象。data = iddata (y2, u2, 0.08)
data =时域与1000个样本数据集。样品时间:0.08秒(如果指定了的话)y1输入输出单元(如果指定了的话)u1
默认通道名称“日元”
分配给第一个也是唯一一个输出通道。当y2
包含几个频道,频道分配默认的名字y1, y2’,‘y2’,……,“yn”
。同样,默认通道名称‘u1’
分配给第一个也是唯一一个输入通道。关于命名的更多信息渠道,明白了命名、添加和删除的数据通道。
为频域数据构建一个iddata对象
频域数据的输入和输出信号的傅里叶变换在特定的频率值。代表频域数据,使用以下语法来创建iddata
对象:
data = iddata (y, u, Ts,“频率”,w)
“频率”
是一个iddata
属性指定的频率值w
,在那里w
是频率列向量,它定义了傅里叶变换的频率值的y
和u
计算。Ts
是连续的数据样本之间的时间间隔为原始时域数据在几秒钟内。w
,y
,u
有相同的行数。
请注意
您必须指定频率为频域数据向量。
更多信息iddata
时间和频率特性,明白了修改时间和频率向量。
指定一个连续时间系统,集Ts
来0
。
您可以指定当你创建额外的属性iddata
对象,如下:
data = iddata (y, u, Ts Property1, Value1,…,“PropertyN”,家)
关于访问对象属性的更多信息,请参阅属性。
iddata属性
视图的属性iddata
对象,使用得到
命令。例如,在提示符中输入以下命令:
% y2负载输入u2和输出。负载dryer2%创建iddata对象。data = iddata (y2, u2, 0.08);%得到属性值的数据。(数据)
ans =结构体字段:域:‘时间’的名字:“OutputData: x1双[1000]y:“OutputData一样”OutputName:{“日元”}OutputUnit: {"} InputData: u (x1 1000双):“InputData一样”InputName: {‘u1’} InputUnit:{"}时期:Inf InterSample:“zoh”Ts: 0.0800 Tstart: 0.0800 SamplingInstants: x1双[1000]TimeUnit:“秒”ExperimentName:“Exp1”指出:{}用户数据:[]
为所有属性的完整描述,请参见iddata
参考页面。
当你创建一个您可以指定属性iddata
对象使用构造函数的语法:
data = iddata (y, u, Ts Property1, Value1,…,“PropertyN”,家)
改变现有的属性值iddata
对象,使用集
命令或点符号。例如,改变样品的时间0.05
在提示符中输入以下:
(数据集,Ts, 0.05)
或者说:
数据。t = 0.05
属性名不区分大小写。你不需要输入整个属性名的前几个字母唯一地标识该财产。
提示
您可以使用data.y
作为一个替代data.OutputData
访问输出值,或使用data.u
作为一个替代data.InputData
访问输入值。
一个iddata
对象包含频域数据包括frequency-specific属性,例如频率
频率矢量和单位
频率的单位(而不是Tstart
和SamplingInstants
)。
查看属性列表,在提示符中输入下面的命令序列:
% y2负载输入u2和输出。负载dryer2;%创建iddata对象。data = iddata (y2, u2, 0.08);%的数据进行傅里叶变换%转换到频域。data = fft(数据)
data = 501频率响应在频域数据集。频率范围:0到39.27 rad /秒采样时间:0.08秒(如果指定了的话)y1输入输出单元(如果指定了的话)u1
%得到属性值的数据。(数据)
ans =结构体字段:域:“频率”的名字:“OutputData: x1双[501]y:“OutputData一样”OutputName:{“日元”}OutputUnit: {"} InputData: u (x1 501双):“InputData一样”InputName: {‘u1’} InputUnit:{"}时期:Inf InterSample:“zoh”Ts: 0.0800 FrequencyUnit: rad / TimeUnit的频率:x1双[501]TimeUnit:“秒”ExperimentName:“Exp1”指出:{}用户数据:[]
选择的数据通道,在iddata I / O数据和实验对象
Subreferencing输入和输出数据
Subreferencing数据及其属性允许您选择数据值和分配新的数据和属性值。
使用以下语法subreference特定的数据值iddata
对象:
数据(样本、outputchannels inputchannels experimentname)
在这个语法,样品
指定一个或多个样本指标,outputchannels
和inputchannels
指定通道索引或通道名称experimentname
指定实验索引或名字。
例如,要获取样本5
通过30.
在iddata
对象数据
并将它们存储在一个新的iddata
对象data_sub
使用下面的语法:
data_sub =数据(5)
您还可以使用逻辑表达式subreference数据。例如,检索所有数据值从实验数据集样本之间,瞬间1.27
和9.3
在iddata
对象数据
,并将它们分配给data_sub
使用下面的语法:
data_sub =数据(data.sa > 1.27 &data.sa < 9.3)
请注意
你不需要输入完整的属性名。在这个例子中,sa
在data.sa
惟一地标识SamplingInstants
财产。
你可以从一个检索输入信号iddata
对象使用以下命令:
u =得到(数据、“InputData”)
或
data.InputData
或
data.u% u is the abbreviation for InputData
类似地,您可以使用检索输出数据
data.OutputData
或
data.y% y is the abbreviation for OutputData
Subreferencing数据通道
一般使用以下语法subreference特定数据通道iddata
对象:
实验数据(样本、outputchannels inputchannels)
在这个语法,样品
指定一个或多个样本指标,outputchannels
和inputchannels
指定通道索引或通道名称experimentname
指定实验索引或名字。
指定多个通道名称,您必须使用一个单元阵列特征向量的名字。
例如,假设iddata
对象数据
包含三个输出通道(命名日元
,y2
,y3
),四个输入通道(命名u1
,u2
,u3
,的愉快
)。选择所有数据样本y3
,u1
,的愉快
在提示符中输入以下命令:
%使用单元阵列参考%输入通道‘u1’和‘愉快’data_sub =数据(:,y3, {‘u1’,‘愉快’})
或者同样的
%使用索引1频道和4%参考输入通道data_sub =数据(:,3、4 [1])
提示
使用冒号(:
)来指定所有样品或渠道,和空矩阵([]
)指定没有样品或通道。
如果你想创建一个时间序列对象只通过提取的输出数据iddata
对象,输入以下命令:
data_ts =数据(:,:,[])
您可以将新值分配给subreferenced变量。例如,以下命令分配前10的值输出通道1
的数据
在样本值101年
通过110年
在输出通道2
的data1
。它还分配样本中的值101年
通过110年
在输入通道3
的data1
第一个10值的输入通道1
的数据
。
数据(1:10 1 1)= data1 (101:110、2、3)
Subreferencing实验
一般使用以下语法subreference特定的实验iddata
对象:
数据(样本、outputchannels inputchannels experimentname)
在这个语法,样品
指定一个或多个样本指标,outputchannels
和inputchannels
指定通道索引或通道名称experimentname
指定实验索引或名字。
当指定几个实验名称,您必须使用一个单元阵列特征向量的名字。的iddata
对象存储实验名称ExperimentName
财产。
例如,假设iddata
对象数据
包含五个实验用默认的名字,Exp1
,Exp2
,Exp3
,Exp4
,Exp5
。使用下面的语法来subreference第一和第五实验数据
:
data_sub =数据(:,:,:,{‘Exp1’,‘Exp5}) %使用实验名称
或
data_sub =数据(:,:,:,[1 5)%使用实验索引
提示
使用冒号(:
)来表示所有样品和渠道,和空矩阵([]
)指定没有样品,没有渠道。
或者,您可以使用getexp
命令。下面的例子显示了如何subreference第一和第五实验数据
:
data_sub = getexp(数据,{‘Exp1’,‘Exp5}) %使用实验名称
或
data_sub = getexp(数据[1 5])%使用实验索引
下面的示例展示了如何检索第一个100样本的输出通道2和3和输入通道4到8实验3:
dat (1:10 0 [2、3], [4:8], 3)
越来越多的渠道或iddata对象的数据点
iddata属性存储输入和输出数据
的InputData
iddata
属性存储列输入数据,OutputData
属性存储列输出数据。关于访问的更多信息iddata
属性,看到iddata属性。
横向连接
横向连接的iddata
对象创建一个新的iddata
对象添加所有InputData
信息和所有OutputData
。这种类型的连接产生一个单独的对象有更多的输入和输出通道。例如,下面的语法上执行水平连接iddata
对象data1、data2,…, dataN
:
data = [data1、data2,…, dataN]
这个语法相当于长语法如下:
data.InputData= [data1.InputData,data2.InputData,...,dataN.InputData] data.OutputData = [data1.OutputData,data2.OutputData,...,dataN.OutputData]
横向连接,data1、data2,…, dataN
必须有相同数量的样品和实验,和相同的吗Ts
和Tstart
值。
在连接通道iddata
对象命名按照下列规则:
结合默认通道名称——如果你连接
iddata
对象与默认通道名称,例如u1
和日元
,在新渠道iddata
对象会自动重命名,以避免名称重复。结合重复输入通道——如果
data1、data2,…, dataN
有输入通道复制用户定义的名称,这样吗dataK
包含通道名称已经存在dataJ
与J < K
,dataK
渠道将被忽略。结合重复输出通道——如果
data1、data2,…, dataN
有输入通道复制用户定义的名称,只有输出通道连接期间添加了独特的名称。
垂直连接
垂直连接的iddata
对象创建一个新的iddata
对象,垂直堆叠的输入和输出数据值在相应的数据通道。由此产生的对象有相同数量的渠道,但每个通道包含更多的数据点。例如,下面的语法创建一个数据
对象,它的样本总数是样品的总和data1、data2,…, dataN
。
data = [data1; data2;…;dataN]
这个语法相当于长语法如下:
data.InputData= [data1.InputData;data2.InputData;...;dataN.InputData] data.OutputData = [data1.OutputData;data2.OutputData;...;dataN.OutputData]
对于垂直连接,data1、data2,…, dataN
必须有相同数量的输入通道、输出通道、和实验。