主要内容

fdesign.nyquist

奈奎斯特滤波器规范

语法

D = fdesign.nyquist
D = fdesign.nyquist(l, spec)
D = fdesign.nyquist(l,spec,specvalue1,specvalue2,…)
D = fdesign.nyquist(l,specvalue1,specvalue2)
D = fdesign.nyquist(…,fs)
D = fdesign.nyquist(…,magunits)

描述

D = fdesign.nyquist构造一个Nyquist或l波段滤波器规范对象d,为属性应用默认值太瓦而且ast.缺省情况下,filter对象设计了一个最小阶半带(L=2) Nyquist滤波器。

使用fdesign.nyquist随着设计方法生成一个系统对象™,如果“SystemObject”标志。设计方法设置为真正的

D = fdesign.nyquist(l, spec)构造对象d并设置它的规范财产规范.使用lL = 2设计半带FIR滤波器,L = 3设计三带FIR滤波器,以此类推。当你使用奈奎斯特滤波器作为插值器时,l或l是插值因子。如果不使用默认语法,第一个输入参数必须是lD = fdesign.nyquist

规范表示控制过滤器设计的各种过滤器响应特征,例如过滤器顺序。有效的条目规范如下所示。条目不区分大小写。

  • 太瓦ast(默认选项)

  • n太瓦

  • n

  • nast

在那里,

  • ast-停止带的衰减,单位为分贝(默认单位)。

  • n-过滤顺序。

  • 太瓦-通过带和停止带之间的过渡区域的宽度。以标准化频率单位表示的。

应用于奈奎斯特筛选器规范对象的筛选器设计方法会根据规范选择。使用designmethods确定哪种设计方法适用于对象及其规范选项。不同的过滤器设计方法也有可以指定的选项。使用designopts用设计方法查看可用的选项。例如:

f = fdesign.nyquist (4 ' N, TW ');designmethods (f)

D = fdesign.nyquist(l,spec,specvalue1,specvalue2,…)构造一个对象d并将其规范设置为规范,而规格值为specvalue1specvalue2,等等。

D = fdesign.nyquist(l,specvalue1,specvalue2)构造一个对象d中提供的值lspecvalue1, specvalue2作为的值l太瓦而且ast

D = fdesign.nyquist(…,fs)添加参数fs,以Hz为单位定义要使用的采样频率。在本例中,规格中的所有频率都以Hz为单位。

D = fdesign.nyquist(…,magunits)指定在输入参数中提供的任何大小规格的单位。magunits可以是其中之一

  • 线性-以线性单位指定震级

  • dB-以分贝为单位指定震级

  • 的平方-以功率单位指定震级

当你省略magunits参数,fdesign假设所有的幅度都以分贝为单位。请注意,fdesign以分贝为单位存储所有震级规格(必要时转换为分贝),而不管您如何指定震级。

Nyquist fdesign对象的局限性

对象使用Nyquist筛选器规范对象equiripple设计方法对生成的过滤器施加了一些限制,这是由equiripple设计算法。

  • 当您要求从equiripple对于奈奎斯特对象,设计算法可能不会收敛,并可能因滤波器收敛错误而失败。

  • 指定所需筛选器的顺序时,使用equiripple设计方法,设计可能不收敛。

  • 通常,以下规范单独或相互组合会导致Nyquist对象的过滤器收敛问题equiripple设计方法。

    • 非常高阶

    • 过渡宽度小

    • 阻带衰减非常大

注意,半带滤波器(带= 2的滤波器)没有收敛问题。

类在出现收敛问题时(无论是上述情况还是其他情况),都可以使用kaiserwin方法。

此外,如果您使用Nyquist对象来设计抽取器或插值器(其中插值或抽取因子不是质数),那么使用多级滤波器设计可能是您的最佳方法。

例子

全部折叠

这些示例展示了如何构造Nyquist筛选器规范对象。

首先,创建一个默认的规范对象,不使用输入参数。

D = fdesign.nyquist;% #好吧

现在通过传递规范类型'n,ast'来创建一个对象——结果对象使用n和ast的默认值。

D = fdesign.nyquist(2,“n, ast”);% #好吧

创建另一个Nyquist过滤器对象,将规范值传递给该对象,而不是接受n和ast的默认值。

D = fdesign.nyquist(3,“n, ast”, 42岁,80年)% #好吧
d = nyquist with properties: Response: ' nyquist '规格:'N,Ast'描述:{2x1 cell} NormalizedFrequency: 1 FilterOrder: 42 stopp: 80 Band: 3

最后,传递与默认规范相对应的筛选规范- tw,ast。当你只传递值时,fdesign。nyquist assumes the default Specification option.

D = fdesign.nyquist(4,.01,80)
d = nyquist与属性:响应:' nyquist '规格:'TW,Ast'描述:{2x1 cell} NormalizedFrequency: 1 TransitionWidth: 0.0100 stop: 80 Band: 4

现在使用凯瑟温设计方法设计一个奈奎斯特滤波器。

Hd =设计(d,“kaiserwin”“SystemObject”,真正的);

创建两个具有非负零相位响应和不具有非负零相位响应的等纹波奈奎斯特四带滤波器:

F = fdesign.nyquist(4,“N, TW”12、0.2);

具有非负零相位响应的等纹波奈奎斯特四带滤波器

Hd1 =设计(f,“equiripple”“zerophase”,真的,“SystemObject”,真正的);

Equiripple Nyquist 4带滤波器,'ZeroPhase'设置为false 'ZeroPhase',false是默认值

Hd2 =设计(f,“equiripple”“zerophase”假的,“SystemObject”,真正的);

获得实值振幅(不是幅度)

[Hr_zerophase,~] =零相位(Hd1);[Hr,W] =零期(Hd2);

绘制并比较响应

情节(W Hr_zerophase“k”“线宽”2);包含(“弧度/样本”);ylabel (“振幅”);持有;情节(W,人力资源,“r”);轴;网格;传奇(“零相位”,true”"零相位"为假");

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象用'ZeroPhase'表示为真,用'ZeroPhase'表示为假。

请注意,零相位响应的振幅(黑线)对于所有频率都是非负的。

“零相位”选项仅对具有“N,TW”规范的等纹波Nyquist设计有效。你不能指定“MinPhase”和“zerphase”同时为“true”。

版本历史

在R2011a中引入