主要内容

频域识别:使用频域数据估计模型

这个例子展示了如何使用频域数据估计模型。使用频域数据的模型的估计和验证与使用时域数据的工作方式相同。这为使用时间和频域以及频谱(FRF)数据的模型估计和分析提供了很大的灵活性。您可以同时使用两个领域的数据估计模型,比较并组合这些模型。用时域数据估计的模型可以用光谱数据验证,反之亦然。

频域数据不能用于非线性模型的估计或验证。

简介

频域实验数据在许多应用中都很常见。数据可能是使用频率分析仪从过程中收集的频率响应数据(频率函数:FRF)。它也可能是更实用的工作与输入的和输出的傅里叶变换(时域数据的FFT),例如处理周期或带限数据。(带限连续时间信号没有高于奈奎斯特频率的频率成分)。在“系统识别工具箱”中,频域I/O数据的表示方式与时域数据相同,即使用iddata对象。对象的“Domain”属性必须设置为“Frequency”。频率响应数据表示为复向量或作为频率函数的幅度/相位向量。工具箱中的IDFRD对象用于封装frf,其中用户指定复杂响应数据和频率向量。这样的IDDATA或IDFRD对象(以及Control System Toolbox的FRD对象)可以与任何估计例程(例如过程特遣部队等等)。

频域数据检测

让我们从加载一些频域数据开始:

负载demofr

此mat文件包含频率处的频率响应数据W为振幅响应AMP还有相位响应PHA.让我们先来看看数据:

次要情节(211),重对数(W, AMP)、标题(“振幅响应”)子图(212),半对数(W,PHA),标题(“相位响应”

该实验数据现在将存储为IDFRD对象。首先将振幅和相位转换为复值响应:

zfr = AMP.*exp(1i*PHA*pi/180);Ts = 0.1;gfr = idfrd(zfr,W,Ts);

Ts是底层数据的采样时间。如果数据对应于连续时间,例如,由于输入被带限,则使用Ts = 0。

注意:如果拥有Control System Toolbox™,则可以使用FRD对象而不是IDFRD对象。IDFRD提供了更多信息的选项,如FRD对象中没有的干扰光谱和不确定性测量。

IDFRD对象肾小球滤过率(gfr)现在包含了数据,可以用不同的方式绘制和分析。要查看数据,我们可以使用情节波德

CLF波德(gfr),图例(肾小球滤过率(gfr)的

利用频响数据估计模型

要估计模型,您现在可以使用肾小球滤过率(gfr)作为一个数据集,以透明的方式包含工具箱的所有命令。唯一的限制是不能建立噪声模型。这意味着对于多项式模型,只有OE(输出误差模型)适用,而对于状态空间模型,您必须进行修正K = 0

M1 = oe(gfr,[2 2 1])%离散时间输出误差(传递函数)模型Ms = sest(gfr)具有默认顺序选择的连续时间状态空间模型Mproc =进程(gfr,“P2UDZ”%二阶欠阻尼连续时间模型比较(gfr,m1,ms,mproc) L = findobj(gcf,“类型”“传奇”);L.Location =“西南”将图例移动到非重叠位置
m1 =离散时间OE模型:y(t) = [B(z)/F(z)]u(t) + e(t) B(z) = 0.9986 z^-1 + 0.4968 z^-2 F(z) =1 - 1.499 z^-1 + 0.6998 z^-2采样时间:0.1秒参数化:多项式阶数:nb=2 nf=2 nk=1自由系数数:4参数及其不确定性使用"polydata"、"getpvec"、"getcov"。状态:使用OE对频响数据“gfr”进行估计。适合估算数据:88.04%消防工程:0.2512,MSE: 0.2492毫秒=连续时间状态空间模型发现:dx / dt = x (t) + B u e (t) + K (t) y (t) = C x (t) + D u (t) + e (t) = (x1, x2) x1 -1.785 - 3.097 x2 -6.835 - -1.785 B = u1 x1 -4.15 x2 27.17 C = (x1, x2)日元1.97 - 0.3947 D = u1 y1 0 K = y₁x1 0 x2 0参数化:自由形式(所有系数A、B、C免费)。馈通:无扰动分量:无自由系数数:8参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。状态:使用SSEST对频响数据“gfr”进行估计。拟合估计数据:88.04% FPE: 0.2512, MSE: 0.2492 mproc =带传递函数的过程模型:1+Tz*s G(s) = Kp * ---------------------- * exp(-Td*s) 1+2*Zeta*Tw*s+(Tw*s)^2 Kp = 7.4619 Tw = 0.20245 Zeta = 0.36242 Td = 0 Tz = 0.013617参数化:{'P2DUZ'}自由系数数:5参数及其不确定性使用"getpvec", "getcov"。状态:在频响数据“gfr”上使用PROCEST进行估计。拟合估计数据:88.03% FPE: 0.2517, MSE: 0.2492

如上所示,使用光谱数据,可以在连续和离散时域估计各种线性模型类型。这些模型可以使用时域数据进行验证。时域I/O数据集ztime,例如,从同一系统收集,并可用于验证m1女士而且mproc

比较(ztime, m1, ms, mproc)%验证在不同的领域

我们还可以使用验证数据查看残差来确认模型的质量ztime.正如观察到的,残差几乎是白色的:

渣油(ztime mproc)残差图

使用SPAFDR压缩数据

使用频响数据的一个重要原因是它很容易压缩信息而损失很小。命令SPAFDR允许您在有限的频率上计算平滑的响应数据,例如使用对数间距。这里有一个例子肾小球滤过率(gfr)数据被压缩为100个对数间隔的频率值。采用类似的技术,也可以将原始时域数据进行压缩:

SGFR = spafdr(gfr)%频谱估计与频率相关的分辨率Sz = spafdr(ztime);利用时域数据进行谱估计CLF波德(gfr,sgfr,sz)轴([pi/100 10*pi, -272 105])“gfr(原始数据)”“sgfr”“深圳”“位置”“西南”
sgfr = IDFRD模型。包含1个输出(s)和1个输入(s)的频率响应数据,以及输出扰动的频谱。响应数据和扰动谱可在100个频率点上获得,范围从0.03142 rad/s到31.42 rad/s。采样时间:0.1秒输出通道:“y1”输入通道:“u1”状态:使用频率响应数据“gfr”上的SPAFDR估计。

博德图表明,平滑数据中的信息已经得到了很好的照顾。现在,这些100点的数据记录可以很好地用于模型估计。例如:

MSM = oe(sgfr,[2 2 1]);比较(ztime,男男,m1)% msm具有与M1相同的精度(基于1000点)

频域I/O数据估计

可能测量值可以作为输入和输出的傅里叶变换。来自系统的频域数据以信号Y和u的形式给出,在对数图中它们看起来是这样的

Wfd = (0:500)'*10*pi/500;次要情节(211),重对数(Wfd、abs (Y))、标题("输出的振幅")次要情节(212),重对数(Wfd、abs (U))、标题("输入的振幅"

频率响应数据本质上是之间的比值Y而且U.将频域数据收集为IDDATA对象,步骤如下:

ZFD = iddata(Y, U,“t”, 0.1,“频率”, Wfd)
ZFD = 501个频率响应的频域数据集。频率范围:0 ~ 31.416 rad/seconds采样时间:0.1秒输出单位(如有指定)y1输入单位(如有指定)u1

现在,又是频域数据集ZFD可作为所有估计例程的数据,与时域数据和频响数据一样:

mf = sest(ZFD)当这样调用时,% SSEST在1:10范围内选择最佳顺序mfr = ssregest(ZFD)%一种基于正则化约简的状态空间估计器clf比较(ztime、mf、生产商、m1)
mf =连续时间识别状态空间模型:dx/dt = A x(t) + B u(t) + K e(t) y(t) = C x(t) + D u(t) + e(t) A = x1 x2 x1 -1.78 3.095 x2 -6.812 -1.78 B = u1 x1 1.32 x2 28.61 C = x1 x2 y1 2 6.468e-08 D = u1 y1 0 K = y1 x1 0 x2 0参数化:FREE形式(所有系数在A, B, C中自由)。馈通:无扰动分量:无自由系数数:8参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。状态:在频域数据“ZFD”上使用SSEST进行估计。对估计数据拟合:97.21% FPE: 0.04288, MSE: 0.04186 mfr =离散时间识别状态空间模型:x (t + Ts) = x (t) + B K u (t) + e (t) y (t) = C x (t) + D u (t) + e (t) = (x1, x2) x3 x4 x5 x6 x1 x2 0.701 -0.05307 -0.4345 0.006642 -0.08085 -0.1158 -0.4539 -0.09623 -0.3629 0.2467 0.1719 -0.3996 0.4385 0.01558 0.1768 -0.2113 -0.2219 0.3536 x3 x4 0.1821 -0.3465 -0.3292 0.05591 -0.09939 -0.338 0.1236 0.2537 -0.387 -0.1357 0.2578 -0.2483 x5 x6 x7 0.226 0.04117 0.6891 -0.0873 0.2818 -0.1056 0.1859 0.04223 -0.06004 0.05337 0.1948 0.06355 0.09052 0.4216 0.3997 0.629 0.1968 -0.7077的混合体x9 0.01696 - 0.059610.04891 -0.01251 0.03521 0.3876 x10 -0.01727 -0.1232 -0.03586 -0.1187 -0.1738 -0.05051 x7 x8 x9 x10 x1 -0.3087 0.007547 -0.02011 -0.1469 x2 -0.01728 - 0.03883 x3 0.07107 -0.2977 0.129 -0.06179 x4 -0.08461 -0.03541 -0.06711 0.1759 x5 -0.5324 0.1778 0.1114 -2.119e-05 x6 0.155 -0.5047 -0.285 0.3976 x7 -0.2406 0.5674 -0.3337 -0.105 0.1995 x9 0.2024 0.4718 -0.01861 0.5838 x10 0.01243 0.2968 -0.6808 -0.7726 B = u1 x1 -0.09482 x2 0.7665 x3 -1.036 x4 -0.162 x5-0.2926 x6 0.0805 x7 -0.1277 x8 -0.02441 x9 -0.0288 x10 0.03776 C = x1 x2 x3 x4 x5 x6 x6 x7 y1 1.956 -0.4539 -1.805 0.3662 1.691 0.8489 x8 x9 x10 y1 0.148 0.5203 -0.4013 D = u1 y1 0 K = y1 x1 0.1063 x2 -0.007395 x3 0.0426 x4 -0.004966 x5 -0.01505 x6 -0.005483 x7 -0.0004218 x8 -0.001044 x9 -0.003066 x10 0.002273采样时间:0.1秒参数化:FREE形式(所有系数在A, B, C中自由)。参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。状态:使用SSREGEST对频域数据“ZFD”进行估计。与估计数据拟合:76.61%(预测焦点)FPE: 3.448, MSE: 2.938

数据表示之间的转换(时间-频率)

时域和频域输入输出数据集可以通过FFT和IFFT转换到任意一个域。这些命令适用于IDDATA对象:

Dataf = fft(ztime) datat = ifft(Dataf)
dataf = 501频率响应的频域数据集。频率范围:0 ~ 31.416 rad/秒采样时间:0.1秒输出单位(如指定)y1输入单位(如指定)u1 datat = 1000个采样的时域数据集。采样时间:0.1秒输出单位(如指定)y1输入单位(如指定)u1

SPAFDR、SPA和ETFE可以将时域和频域输入输出数据转换为频响数据:

g1 = spafdr(ztime) g2 = spafdr(ZFD);clf;波德(g1, g2)
g1 = IDFRD模型。包含1个输出(s)和1个输入(s)的频率响应数据,以及输出扰动的频谱。响应数据和扰动谱可在100个频率点上获得,范围从0.06283 rad/s到31.42 rad/s。采样时间:0.1秒输出通道:“y1”输入通道:“u1”状态:在时域数据“ztime”上使用SPAFDR估计。

频率响应数据还可以通过SPAFDR和SPA转换为更平滑的数据(分辨率更低,数据更少);

G3 = spafdr(gfr);

IDDATA命令可将频响数据转换为频域输入输出信号:

GFD = iddata(g3) plot(GFD)
gfd = 100个频率响应的频域数据集。频率范围:0.031416 ~ 31.416 rad/秒采样时间:0.1秒输出单位(如有指定)y1输入单位(如有指定)u1

利用连续时间频域数据估计连续时间模型

时域数据自然只能作为离散时间的采样数据来存储和处理。频域数据具有连续时间数据可以正确表示的优点。假设底层连续时间信号没有高于奈奎斯特频率的频率信息,例如,因为它们是快速采样的,或者输入没有高于奈奎斯特频率的频率成分,并且数据是从稳态实验中收集的。那么数据的离散傅里叶变换(DFT)也是连续时间信号的傅里叶变换,在选定的频率上。因此,它们可以直接用于拟合连续时间模型。

下面的例子将说明这一点。

考虑连续时间系统:

$$ G(s) = \frac{1}{s^2+s+1} $$

M0 = idpoly(1,1,1,1,[1 1 1],“t”,0)
m0 =连续时间OE模型:y(t) = [B(s)/F(s)]u(t) + e(t) B(s) =1 F(s) = s^2 + s + 1参数化:多项式阶数:nb=1 nf=2 nk=0自由系数数:3参数及其不确定性使用"polydata"、"getpvec"、"getcov"。现状:由直接构建或改造而产生。不估计。

负载数据来自于稳态模拟系统使用周期输入。将采集到的数据转换为频域数据并保存在CTFDData中。垫文件。

负载CTFDData.matdataf%加载连续时间频域数据。

看看数据:

情节(dataf)组(gca,“XLim”0.1 [10])

使用dataf默认情况下,for估计将给出连续时间模型:

M4 = sest(dataf,2);二阶连续时间模型

对于一个多项式模型Nb = 2分子系数和Nf = 2估计分母系数使用:

Nb = 2;Nf = 2;M5 = oe(dataf,[nb nf])
m5 =连续时间OE模型:y(t) = [B(s)/F(s)]u(t) + e(t) B(s) = -0.01814 s + 1.008 F(s) = s^2 + 1.001 s + 0.9967参数化:多项式阶数:nb=2 nf=2 nk=0自由系数数:4参数及其不确定性使用"polydata"、"getpvec"、"getcov"。状态:在频域数据“dataf”上使用OE进行估计。拟合估计数据:70.15% FPE: 0.00491, MSE: 0.00468

将阶跃响应与真实系统的不确定度进行比较m0这些模型m4而且m5.置信区间在图中用补丁表示。

CLF h = stepplot(m0,m4,m5);showConfidence (h, 1)传说(“显示”“位置”“东南”

虽然在这种情况下没有必要,但在使用连续时间数据进行估计时,通常建议将拟合集中在有限的频段(低通滤波数据)。该系统的带宽约为3 rad/s,由高达6.2 rad/s的正弦波激发。聚焦拟合的合理频率范围是[0 7]rad/s:

m6 = sest(dataf,2,ssestOptions(“WeightingFilter”7 [0]))%状态空间模型
m6 =连续时间识别状态空间模型:dx/dt = A x(t) + B u(t) + K e(t) y(t) = C x(t) + D u(t) + e(t) A = x1 x2 x1 -0.5011 1.001 x2 -0.7446 -0.5011 B = u1 x1 -0.01706 x2 1.016 C = x1 x2 y1 1.001 -0.0005347 D = u1 y1 0 K = y1 x1 0 x2 0参数化:FREE形式(所有系数在A, B, C中自由)。馈通:无扰动分量:无自由系数数:8参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。状态:在频域数据“dataf”上使用SSEST进行估计。拟合估计数据:87.03%(数据预过滤)FPE: 0.004832, MSE: 0.003631
m7 = oe(dataf,[1 2],oeOptions(“WeightingFilter”7 [0]))输出误差结构的%多项式模型
m7 =连续时间OE模型:y(t) = [B(s)/F(s)]u(t) + e(t) B(s) = 0.9861 F(s) = s^2 + 0.9498 s + 0.9704参数化:多项式阶数:nb=1 nf=2 nk=0自由系数数:3参数及其不确定性使用"polydata"、"getpvec"、"getcov"。状态:在频域数据“dataf”上使用OE进行估计。拟合估计数据:86.81%(数据预过滤)FPE: 0.004902, MSE: 0.003752
opt = procestOptions(“SearchMethod”“lsqnonlin”...“WeightingFilter”7 [0]);%需要优化工具箱(TM)M8 =进程(数据af,“P2UZ”选择)%欠阻尼极点过程模型
m8 =带传递函数的过程模型:1+Tz*s G(s) = Kp * ---------------------- 1+2*Zeta*Tw*s+(Tw*s)^2 Kp = 1.0124 Tw = 1.0019 Zeta = 0.5021 Tz = -0.017474参数化:{'P2UZ'}自由系数数:4使用"getpvec", "getcov"表示参数及其不确定性。状态:在频域数据“dataf”上使用PROCEST进行估计。拟合估计数据:87.03%(数据预过滤)FPE: 0.004832, MSE: 0.003631
opt = tfestOptions(“SearchMethod”“lsqnonlin”...“WeightingFilter”7 [0]);%需要优化工具箱M9 = tfest(dataf,2,opt)% 2极传递函数
m9 =从输入“u1”到输出“y1”:-0.01662 s + 1.007 ------------------ s^2 + s + 0.995连续时间识别传递函数。参数化:极点数:2零数:1自由系数数:4参数及其不确定度使用“tfdata”、“getpvec”、“getcov”。状态:在频域数据“dataf”上使用TFEST进行估计。拟合估计数据:87.03%(数据预过滤)FPE: 0.00491, MSE: 0.003629
H = stepplot(m0,m6,m7,m8,m9);showConfidence (h, 1)传说(“显示”

结论

我们看到了时间、频率和频谱数据如何无缝地用于估计连续和离散时域中的各种线性模型。这些模型可以在不同于它们所估计的领域进行验证和比较。数据格式(时间、频率和频谱)可以相互转换,使用的方法包括fft传输线spafdr而且水疗中心.此外,直接的,连续时间估计可以通过使用特遣部队党卫军而且过程估计例程。无缝使用任何领域的数据进行估计和分析是系统识别工具箱的一个重要特性。

另请参阅

|||

相关的话题