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
在向量中指定的频率点上w
.标量n
而且米
指定分子和分母多项式的期望阶数。
频率以0到π之间的弧度和长度为单位指定h
一定和的长度一样w
.invfreqz
使用连词
(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,…)
创建一个复杂的过滤器。在这种情况下,不强制对称,频率以-π和π之间的弧度指定。
例子
算法
默认情况下,invfreqz
采用方程误差法从数据中确定最佳模型。这个发现b
而且一个
在
通过创建一个线性方程组并用MATLAB求解®\
操作符。在这里一个(ω(k)),B(ω(k)为多项式的傅里叶变换一个
而且b
,分别在频率ω(k),n频率点的个数(长度h
而且w
).该算法是基于Levi的[1].
高级(“输出误差”)算法使用阻尼迭代搜索的高斯牛顿方法[2],以第一个算法的输出作为初始估计。这解决了将实际频率响应点与期望频率响应点之间的平方误差加权和最小化的直接问题。
参考文献
[1] Levi, e.c.“复杂曲线拟合”。自动控制汇刊.卷AC-4, 1959,第37-44页。
[2]丹尼斯,J. E., Jr.和R. B.施纳贝尔。无约束优化与非线性方程的数值方法.恩格尔伍德悬崖,新泽西州:Prentice-Hall, 1983。