主要内容

表示时间和频域的数据使用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是频率列向量,它定义了傅里叶变换的频率值的yu计算。Ts是连续的数据样本之间的时间间隔为原始时域数据在几秒钟内。w,y,u有相同的行数。

请注意

您必须指定频率为频域数据向量。

更多信息iddata时间和频率特性,明白了修改时间和频率向量

指定一个连续时间系统,集Ts0

您可以指定当你创建额外的属性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属性,例如频率频率矢量和单位频率的单位(而不是TstartSamplingInstants)。

查看属性列表,在提示符中输入下面的命令序列:

% 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)

在这个语法,样品指定一个或多个样本指标,outputchannelsinputchannels指定通道索引或通道名称experimentname指定实验索引或名字。

例如,要获取样本5通过30.iddata对象数据并将它们存储在一个新的iddata对象data_sub使用下面的语法:

data_sub =数据(5)

您还可以使用逻辑表达式subreference数据。例如,检索所有数据值从实验数据集样本之间,瞬间1.279.3iddata对象数据,并将它们分配给data_sub使用下面的语法:

data_sub =数据(data.sa > 1.27 &data.sa < 9.3)

请注意

你不需要输入完整的属性名。在这个例子中,sadata.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)

在这个语法,样品指定一个或多个样本指标,outputchannelsinputchannels指定通道索引或通道名称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年在输出通道2data1。它还分配样本中的值101年通过110年在输入通道3data1第一个10值的输入通道1数据

数据(1:10 1 1)= data1 (101:110、2、3)

Subreferencing实验

一般使用以下语法subreference特定的实验iddata对象:

数据(样本、outputchannels inputchannels experimentname)

在这个语法,样品指定一个或多个样本指标,outputchannelsinputchannels指定通道索引或通道名称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属性存储输入和输出数据

InputDataiddata属性存储列输入数据,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必须有相同数量的样品和实验,和相同的吗TsTstart值。

在连接通道iddata对象命名按照下列规则:

  • 结合默认通道名称——如果你连接iddata对象与默认通道名称,例如u1日元,在新渠道iddata对象会自动重命名,以避免名称重复。

  • 结合重复输入通道——如果data1、data2,…, dataN有输入通道复制用户定义的名称,这样吗dataK包含通道名称已经存在dataJJ < 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必须有相同数量的输入通道、输出通道、和实验。

另请参阅

相关的话题