主要内容

故障排除转移函数模型的频域识别

此示例显示如何使用频率响应数据(FRD)执行和排除SISO系统的标识。这里解释的技术也可以应用于MIMO模型和频域输入输出数据。

当你使用的时候特遣部队命令从频率响应数据估计SISO传输函数模型,估计算法最小化以下最小二乘损耗(成本)功能:

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.frquency;r1 =挤压(弗里克雷斯(gfit,w));r2 =挤压(弗雷琴克(gfrd,w));FITERROR = R1-R2;semilogx(w,abs(fitError)。^ 2)标题(“加权估计误差”);Xlabel('频率(rad / s)');ylabel(“(abs)级”

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

从数据,模型和错误绘图,您可以看到:

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

  • 该算法侧重于拟合低于10 RAD / S以下的嘈杂高幅度数据点,这对优化损耗功能具有很大的贡献。因此,该算法将杂散杆和零分配给该数据区域。要解决此问题,您可以预处理数据以提高该区域中的信噪比。您还可以使用依赖依赖权重,使算法在该区域上放下焦点。

  • 当温度低于40 rad/s时,大部分数据的变化是由于噪声引起的。数据中没有明显的系统模式(谷或峰)。要解决这个问题,可以对数据使用移动平均过滤器来平滑测量响应。

  • 该算法忽略了大约60 rad / s的山谷,以及跟随它的三个轻微阻尼的谐振峰。这些功能对损耗函数略微贡献,因为这些频率很小。要解决此问题,您可以指定依赖函数权重,以使算法更加关注这些频率。

预处理数据

为了提高估计的模型质量,预处理数据。为此,您将截断低于1 rad / s及其上方的数据的低信噪比部分,并且不太有趣。然后,使用移动平均滤波器在40 rad / s以下低频高幅度区域中的平滑数据。在这些频率下,数据具有低信噪比,但具有您对捕获感兴趣的动态。请勿将过滤器应用于40 RAD / S以上的频率,以避免平滑数据,您可以看到谷和三个遵循它的三个峰值。

制作原始副本idfrd数据对象。

gfrdprocessed = gfrd;

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

gfrdprocessed = f选择(gfrdprocessed,1,2e4);

应用三点中心的移动平均滤波器,以平滑40 rad / s的频率响应数据,其中包含杂散动态。响应数据存储在Respolatedata.物品的财产。

w = gfrdprocessed.fricency;f =挤压(gfrdprocessed.responsedata);IDX = W <40;f(idx)= movmean(f(idx),3);

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

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

GfrdProcessed。Respolatedata.=F;

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

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

图中包含一个轴。坐标轴包含两个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作为'inv''invsqrt'频率特性数据。这些选项将权重指定为 1 / | F W. | 1 / | F W. | , 分别。这些选项使您可以快速测试使用更高权重的数据的效果。'invsqrt'通常是一个很好的初始选择。如果这些权重不会产生良好的估计结果,您可以提供如本示例所示的自定义权重。

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

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

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

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

Bodemag(GFRD,GFIT,GFITNEW);-100年ylim ([0]);传奇(“原始数据”的原始模型'新模式');

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

绘制估计误差。通过加入加权滤波器计算估计误差重量你用于估计GfitNew

w = gfrdprocessed.fricency;R1 =挤压(弗里克雷斯(Gfitnew,W));r2 =挤压(频道(gfrdprocessed,w));蒂勒恩=重量。*(R1-R2);semilogx(w,abs(fiterrornew)。^ 2)标题(“加权估计误差”);Xlabel('频率(rad / s)');ylabel(“(abs)级”);

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

新模型成功地捕获了所有系统的动态。

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

也可以看看

|

相关话题