文档

invfreqz

从频率响应数据中识别离散滤波器参数

语法

[b,a] = invfreqz(h,w,n,m)
[b,a] = invfreqz(h,w,n,m,wt)
[b,a] = invfreqz(h,w,n,m,wt,iter)
[b,a] = invfreqz(h,w,n,m,wt,iter,tol)
[b,a] = invfreqz(h,w,n,m,wt,iter,tol,'trace')
[b,a] = invfreqz(h,w,'complex',n,m,…)

描述

invfreqz逆运算freqz;它找到了一个离散时间传递函数,对应于给定的复频率响应。从实验室分析的角度来看,invfreqz可用于将幅度和相位数据转换为传递函数。

[b,a] = invfreqz(h,w,n,m)返回向量中分子和分母的实系数b而且一个传递函数的

H z B z 一个 z b 1 + b 2 z 1 + + b n + 1 z n 一个 1 + 一个 2 z 1 + + 一个 + 1 z

谁的复频率响应是矢量形式给出的h在向量中指定的频率点上w.标量n而且指定分子和分母多项式的期望阶数。

频率以0到π之间的弧度和长度为单位指定h一定和的长度一样winvfreqz使用连词(h)- w以确保适当的频域对称的实滤波器。

[b,a] = invfreqz(h,w,n,m,wt)对拟合误差与频率进行加权,其中wt一个加权因子向量的长度是否等于w

[b,a] = invfreqz(h,w,n,m,wt,iter)而且

[b,a] = invfreqz(h,w,n,m,wt,iter,tol)提供一种优越的算法,保证结果线性系统的稳定性,并使用数值迭代方案搜索最佳拟合。的iter参数告诉invfreqz在解收敛时或收敛后结束迭代iter迭代,无论哪个先出现。invfreqz将收敛定义为当(修改的)梯度向量的范数小于托尔,在那里托尔是可选参数,默认为0.01。要获得所有1的权重向量,使用

invfreqz (h, w, n, m, [], iter, tol)

[b,a] = invfreqz(h,w,n,m,wt,iter,tol,'trace')显示迭代的文本进度报告。

[b,a] = invfreqz(h,w,'complex',n,m,…)创建一个复杂的过滤器。在这种情况下,不强制对称,频率以-π和π之间的弧度指定。

例子

全部折叠

将一个简单的传递函数转换为频响数据,然后再转换回原始滤波器系数。画出函数的零点和极点。

A = [1 2 3 2 1 4];B = [1 2 3 2 3];[h,w] = freqz(b,a,64);[bb,aa] = invfreqz(h,w,4,5)
bb =1×51.0000 2.000 3.0000 2.000 3.0000
aa =1×61.0000 2.0000 3.0000 2.0000 1.0000 4.0000
zplane (bb, aa)

bb而且aa都相当于b而且一个,分别。然而,系统是不稳定的,因为它在单位圆外有极点。使用invfreqz的迭代算法来找到系统的稳定近似。验证极点在单位圆内。

[bbb,aaa] = invfreqz(h,w,4,5,[],30)
bbb =1×50.2427 0.2788 0.0069 0.0971 0.1980
aaa =1×61.0000 -0.8944 0.6954 0.9997 -0.8933 0.6949
zplane (bbb, aaa)

算法

默认情况下,invfreqz采用方程误差法从数据中确定最佳模型。这个发现b而且一个

最小值 b 一个 k 1 n w t k | h k 一个 w k B w k | 2

通过创建一个线性方程组并用MATLAB求解®操作符。在这里一个(ω(k)),B(ω(k)为多项式的傅里叶变换一个而且b,分别在频率ω(k),n频率点的个数(长度h而且w).该算法是基于Levi的[1]

高级(“输出误差”)算法使用阻尼迭代搜索的高斯牛顿方法[2],以第一个算法的输出作为初始估计。这解决了将实际频率响应点与期望频率响应点之间的平方误差加权和最小化的直接问题。

最小值 b 一个 k 1 n w t k | h k B w k 一个 w k | 2

参考文献

[1] Levi, e.c.“复杂曲线拟合”。自动控制汇刊.卷AC-4, 1959,第37-44页。

[2]丹尼斯,J. E., Jr.和R. B.施纳贝尔。无约束优化与非线性方程的数值方法.恩格尔伍德悬崖,新泽西州:Prentice-Hall, 1983。

另请参阅

||

R2006a之前介绍