主要内容

本页采用了机器翻译。点击此处可查看英文原文。

etfe

估计经验传递函数和谱图

说明

g = etfe(data) 估计其传递函数的形式为:

y(t)=G(q)u(t)+v(t)

data 包含时域或频域的输入/输出数据,或时间序列数据。data 可以是 timetable 对象、以逗号分隔的数值矩阵对,或是时域或频域的 iddata 对象。

  • 如果 data 包含时域输入/输出信号,那么 g 就是该数据的输出傅里叶变换与输入傅里叶变换之比。

    对于非周期性数据,在 128 个等间距频率 [1:128]/128*pi/Ts 上对传递函数进行估计。

    对于包含整数个周期的周期性数据 (data.Period = integer),响应是在频率 k*2*pi/period/Tsk = 0 之间(最高至奈奎斯特频率 pi/Ts)计算的,其中 Ts 是数据采样时间。该软件会从结果中去除输入信号能量微不足道的频率点。

  • 如果 data 包含频域输入/输出信号,则 g 表示在所有频率下(其中输入不为零)的输出与输入之比。

  • 如果 data 包含时间序列数据(无输入通道),则 g 是该数据的周期谱,即傅里叶变换的归一化绝对平方。如频谱归一化中所述,相应的谱估计值经过归一化处理,这与 Signal Processing Toolbox™ 产品中的 spectrum 归一化方式不同。

如果 data 是一个时间表,则软件会将最后一个变量解释为唯一的输出变量。要更改此解释,请使用 InputNameOutputName 名称-值参量。

示例

g = etfe(data,M) 使用汉明窗对原始频谱估计值进行平滑处理,从而获得约 pi/M 的频率分辨率。M 的效果与 spa 中的 M 效果类似。对于周期性数据,M 将被忽略。对于窄带光谱以及需要较大 M 值的系统,可使用此语法作为 spa 的替代方案。

示例

g = etfe(data,M,N) 指定了非周期数据的频率间隔 N

  • 对于非周期性时域数据,N 指定频率网格 [1:N]/N*pi/Ts rad/TimeUnit。如果未指定,N 的值为 128。

  • 对于周期性时域数据,将忽略 N

  • 对于频域数据,Nfmin:delta_f:fmax,其中 [fmin fmax]data 中的频率范围,而 delta_f(fmax-fmin)/(N-1) rad/TimeUnit。如果未指定,则响应值将根据数据中输入值不为零的频率进行计算。

示例

g = etfe(___,Name,Value) 使用由一个或多个名称-值参量指定的附加模型选项。

例如,使用 g = etfe(data,'InputName',["u1","u3"],'OutputName',["y1","y4"]) 指定输入和输出信号变量名称。

此语法可与上述任一输入参量组合结合使用。

示例

全部折叠

加载估计数据。

load sdata1 tt1;

估计经验传递函数和平滑谱估计值。

ge = etfe(tt1);
gs = spa(tt1);

在波德图上比较这两个模型。

bode(ge,gs)

MATLAB figure

生成一个周期性输入,用它对系统进行仿真,并在激励频率点处比较所估计模型与原始系统的频率响应。

使用仿真生成一个周期性输入信号和输出信号。

m = idpoly([1 -1.5 0.7],[0 1 0.5]);
u = iddata([],idinput([50,1,10],'sine'));
u.Period = 50;
y = sim(m,u);

估计一个经验传递函数。

me = etfe([y u]);

将经验传递函数与原始模型进行比较。

bode(me,'b*',m,'r')

MATLAB figure

使用汉明窗对原始频谱估计值进行平滑处理,并比较各方法的响应结果。

加载数据。

load sdata1 umat1 ymat1

分别在进行平滑处理和不进行平滑处理的情况下,估计经验传递函数。

ge1 = etfe(umat1,ymat1);
ge2 = etfe(umat1,ymat1,32);

在波德图上比较这些模型。

由于平滑运算的作用,ge2ge1 更平滑。

bode(ge1,ge2)

MATLAB figure

估计具有低频和高频间隔的经验传递函数,并比较其响应。

加载数据。

load iddata9

估计具有低频和高频间隔的经验传递函数。

ge1 = etfe(z9,[],32);
ge2 = etfe(z9,[],512);

绘制这两个模型的输出频谱。

spectrum(ge1,'b.-',ge2,'g')

MATLAB figure

输入参数

全部折叠

均匀采样估计数据,可指定为时间表、以逗号分隔的矩阵对、时域或频域 iddata 对象、时间表的元胞数组,或矩阵的元胞数组对,具体如下文所述。

时间表

data 指定为使用等间隔时间向量的 timetabledata 包含表示输入和输出通道的变量。

对于多试验数据,将数据指定为时间表的 Ne×1 元胞数组,其中 Ne 是试验的数量。所有试验的采样时间必须匹配。

在利用时间表进行估计时,您可以使用所有变量,也可以指定要使用的子集通道。要选择用于估计的特定输入和输出通道,请使用 InputNameOutputName 名称-值参量。

对于时间序列数据,可以指定 data 作为仅包含一个输出变量的单变量时间表,或者使用 InputNameOutputName 名称-值参量来指定仅对输出变量进行估计。

例如,sys = etfe(data,'OutputName',"y2",'InputName',[]) 使用输出变量 y2(不使用任何输入变量)根据时间表 data 估计时间序列模型 sys

以逗号分隔的矩阵对

data 指定为由 uy 组成的以逗号分隔的矩阵对,其中包含均匀采样的输入和输出时域值。基于矩阵的数据不包含采样时间信息。该软件假设采样时间为一秒。不建议对连续时间系统使用基于矩阵的数据。

对于 SISO 系统,请将 uy 指定为长度为 Ns 的列向量,其中 Ns 为采样点数。

对于 MIMO 系统,请将 uy 指定为一组矩阵对,其维度如下:

  • u - Ns×Nu,其中 Nu 表示输入的数量

  • y - Ns×Ny,其中 Ny 表示输出数量

对于多试验数据,将 uy 指定为一对 1×Ne 元胞数组,其中 Ne 为试验数。

对于时间序列系统,请指定空的 u,即 []y

数据对象

一个估计数据对象,指定为包含均匀采样输入和输出值的时域或频域 iddata 对象。数据对象可以有一个或多个输出通道,以及零个或多个输入通道。软件默认将模型的采样时间设置为估计数据的采样时间。

有关使用估计数据类型的详细信息,请参阅Data Domains and Data Types in System Identification Toolbox

频率分辨率,指定为一个正标量。默认值 [] 表示软件不会对原始谱估计值进行任何平滑处理。

有关使用估计数据类型的详细信息,请参阅Data Domains and Data Types in System Identification Toolbox

频率间隔,指定为一个正标量。对于频域数据,默认的频率间隔即为估计数据中固有的间隔。

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: sys = etfe(data,'InputName',"u2")

输入通道名称,指定为字符串、字符向量、字符串数组或字符向量元胞数组。

如果您使用时间表作为数据源,则 InputName 中的名称必须是时间表变量的子集。

示例: sys = etfe(tt,__,'InputName',["u1" "u2"]) 从时间表 u1 中选择变量 u2tt 作为输入通道用于估计。

输出通道名称,指定为字符串、字符向量、字符串数组或字符向量单元元胞数组。

如果您使用时间表作为数据源,则 OutputName 中的名称必须是时间表变量的子集。

示例: sys = etfe(tt,__,'OutputName',["y1" "y3"]) 从时间表 y1 中选择变量 y3tt 作为输出通道用于估计。

采样时间,指定为以逗号分隔的对,由 'Ts' 和以 TimeUnit 指定的单位表示的采样时间组成。当您使用基于矩阵的数据(uy)时,如果您需要除假定的 1 秒采样时间之外的采样时间,则必须指定 Ts

要获取时间表 tt 的数据采样时间,请使用时间表属性 tt.Properties.Timestep

示例: etfe(umat1,ymat1,___,'Ts',0.08) 计算采样时间为 0.08 秒的模型。

输出参量

全部折叠

传递函数估计结果,以 idfrd 模型形式返回。

估计结果及所用选项的相关信息存储在模型的 Report 属性中。Report 包含以下字段:

报告字段描述
Status

模型状态摘要,指示模型是通过构造创建的还是通过估计获得的

Method

使用估计命令

WindowSize

汉明窗的大小。

DataUsed

用于估计的数据的属性,以具有以下字段的结构返回。

  • Name - 数据集名称

  • Type - 数据类型

  • Length - 数据采样数

  • Ts - 采样时间

  • InterSample - 输入采样间行为,以下列值之一返回:

    • 'zoh' - 零阶保持器在采样之间维持分段常数输入信号。

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

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

  • InputOffset - 估计期间从时域输入数据中移除的偏移量。对于非线性模型,它是 []

  • OutputOffset - 估计期间从时域输出数据中移除的偏移量。对于非线性模型,它是 []

有关使用 Report 的详细信息,请参阅Estimation Report

版本历史记录

在 R2006a 之前推出

全部展开