主要内容

传递函数模型的频域识别故障排除

此示例显示如何使用频率响应数据(FRD)执行SISO系统的识别和故障排除。此处说明的技术也可应用于MIMO模型和频域输入输出数据。

当你使用特遣部队命令从频响数据估计一个SISO传递函数模型,估计算法使以下最小二乘损失(cost)函数最小化:

M N M Z E G ( ω ) K = 1. N F | W ( ω K ) ( G ( ω K ) - F ( ω K ) ) | 2.

在这里W是你指定的频率相关的权重,G是要估计的传递函数,F测量的频率响应数据,和 W 是频率。Nf是数据可用的频率数。 G ( W ) - F ( W ) 为频率响应误差。

在本例中,您首先估计模型,而无需预处理数据或使用估计选项指定权重过滤器。然后应用这些疑难解答技术来改进模型估计。

在不进行预处理和过滤的情况下估计模型

加载所测的连续时间频率响应数据。

负载troubleshooting_example_dataGfrd;

Gfrd是一个idfrd对象,该对象存储数据。

利用估计数据估计一个具有11个极点和10个零的初始传递函数模型。

Gfit=tfest(Gfrd,11,10);

绘制估计模型的频响幅值和实测频响数据。

bodemag(Gfrd,Gfit);ylim([-100 0])图例(“测量”,“估计”)

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象代表测量的,估计的。

估计模型包含虚假动态。该估计算法忽略了60 rad/s时的波谷和之后的共振峰。因此,该模型与数据不太吻合。

算法使平方误差值最小化, | W ( W ) ( G ( W ) - F ( W ) ) | 2. ,在损失函数中。画出这个量作为频率的函数。这个错误图提供了哪些数据点对损失函数贡献最大的视图,以及估计过程中可能的限制因素。情节可以帮助您确定为什么存在虚假或未捕获的动态。

因为您没有指定与频率相关的权重, W ( W ) 是1。

w = Gfrd.Frequency;r1 =挤压(freqresp(礼物,w));r2 =挤压(freqresp (Gfrd w));fitError = r1-r2;semilogx (w、abs (fitError)。^ 2)标题(“加权估计误差”);xlabel(‘频率(rad/s)’); 伊拉贝尔(“(abs)级”)

图中包含一个轴对象。带有标题加权估计误差的轴对象包含一个类型为line的对象。

从数据、模型和误差图中,您可以看到:

  • 最大拟合误差在10 rad/s以下。

  • 该算法侧重于拟合10 rad/s以下的高噪声数据点,这些数据点对优化损失函数有很大贡献。因此,该算法为该数据区域分配虚假极点和零点。为了解决这个问题,可以对数据进行预处理,以提高该区域的信噪比。您还可以使用频率相关权重,使算法较少关注该区域。

  • 在大约40 rad/s以下,数据的大多数变化是由于噪声。数据中没有显著的系统模式(谷或峰)。要解决这个问题,可以对数据使用移动平均滤波器来平滑测量的响应。

  • 算法忽略了60 rad/s左右的波谷和跟随它的三个轻阻尼谐振峰。这些特征对损耗函数的贡献很小,因为在这些频率上的拟合误差很小。要解决这个问题,可以指定与频率相关的权重,使算法更加关注这些频率。

预处理数据

要提高估计的模型质量,请对数据进行预处理。为此,请截断低于1 rad/s和高于2e4 rad/s的数据中不感兴趣的低信噪比部分。然后使用移动平均滤波器平滑低于40 rad/s的低频高幅值区域中的数据。在这些频率下,数据的低信号为零ise比率,但具有您感兴趣捕获的动态。不要在频率高于40 rad/s时应用滤波器,以避免在您看到谷和随后的三个峰值的位置平滑数据。

复制原件idfrd数据对象。

GfrdProcessed=Gfrd;

截断1 rad/s以下和2e4 rad/s以上的数据。

GfrdProcessed=fselect(GfrdProcessed,1,2e4);

应用三点居中移动平均滤波器平滑包含虚假动态的低于40 rad/s的频率响应数据。响应数据存储在响应数据对象的属性。

w=GfrdProcessed.Frequency;f=挤压(GfrdProcessed.ResponseData);idx=w<40;f(idx)=移动平均值(f(idx),3);

在这里f (idx)为频率小于40 rad/s时的频响数据。

将过滤后的数据放回原始数据对象中。

GfrdProcessed。响应数据=F;

绘制原始数据和预处理数据。

bodemag (Gfrd GfrdProcessed);-100年ylim ([0]);传奇(“原始数据”,“预处理数据”);

图形包含一个Axis对象。Axis对象包含2个line类型的对象。这些对象表示原始数据、预处理数据。

该图显示,经过预处理后,所有所需的动态都是完整的。

指定加权过滤器

在存在杂散动力学的10 rad/s以下的低频区域使用低权重。这种低权重和较早前对该数据应用的平滑降低了估计模型响应在该区域出现假峰的机会。

重量=个(尺寸(f));idx=w<10;重量(idx)=重量(idx)/10;

对频率范围为40-6e3 rad/s的数据使用高权重,您希望捕获动态,但响应数据幅度较低。

Idx = w>40 & w<6e3;重量(idx) =重量(idx) * 30;

在中指定权重WeightingFilter估计选项集的选项。

tfestOpt = tfestOptions (“WeightingFilter”、重量);

请注意,重量是一个自定义加权过滤器。你也可以指定WeightingFilter“投资部”“invsqrt”频率特性数据。这些选项将权重指定为 1. / | F ( W ) | 1. / | F ( W ) | 这些选项使您能够快速测试对低量级数据区域使用更高权重的效果。“invsqrt”通常是一个很好的初始选择。如果这些权重不能产生良好的估计结果,您可以提供自定义权重,如本例所示。

使用预处理和过滤数据的估计模型

利用预处理后的数据和指定的加权滤波器估计一个11极10零的传递函数模型。

GfitNew =特遣部队(tfestOpt GfrdProcessed 11 10日);

绘制原始数据、初始模型响应和新模型响应。

bodemag(Gfrd、Gfit、GfitNew);ylim([-100 0]);图例(“原始数据”,的原始模型,“新车型”);

图中包含一个轴对象。轴对象包含3个类型为line的对象。这些对象分别代表原始数据、原始模型、新模型。

画出估计误差。通过包含加权滤波器来计算估计误差重量你用来估算的GfitNew.

w=GfrdProcessed.Frequency;r1=挤压(freqresp(GfitNew,w));r2=挤压(freqresp(GfrdProcessed,w));fitErrorNew=重量。*(r1-r2);semilogx(w,abs(fitErrorNew)。^2)标题(“加权估计误差”);xlabel(‘频率(rad/s)’); 伊拉贝尔(“(abs)级”);

图中包含一个轴对象。带有标题加权估计误差的轴对象包含一个类型为line的对象。

新模型成功地捕获了所有感兴趣的系统动力学。

如果初始选择的权重没有产生令人满意的结果,则可以使用加权误差图进行进一步的故障排除。

另见

|

相关的话题