主要内容

杀害多人者和插入器的设计

这个例子展示了如何设计过滤器的大量毁灭和插值离散序列。

低通滤波的作用速率转换

率转换的过程变化的速度离散信号来获得一个新的潜在的连续信号离散表示。这个过程包括统一将采样和upsampling。制服将采样率N指的是把每一个Nth的样本序列和丢弃剩余的样本。制服upsampling倍N是指的填充N每两个连续样本1 0之间。

x = 1:3 L = 3;% upsampling率M = 2;%将采样率% Upsample和downsamplexUp = upsample (x L) xDown = downsample (x,米)
x = 1 2 3 xUp = 1 0 0 2 0 0 3 0 0 xDown = 1 3

这两个基本操作介绍信号构件:将采样介绍了混叠,upsampling介绍了成像。为了减轻这些效果,使用低通滤波器。

  • 当将采样率N美元,一个低通滤波器之前将采样限制输入带宽,从而消除频谱混叠。这类似于模拟滤波器中使用A / D转换器。理想情况下,这种抗混叠滤波器单元获得的截止频率$ \ omega_c = \压裂{1}{N} \ omega_N $,在这里\ omega_N美元奈奎斯特频率的信号。注意:潜在的采样频率是微不足道的,我们假设归一化频率(即。\ omega_N = 1美元在整个讨论)。

  • 当upsampling率N美元后,一个低通滤波器应用upsampling称为一个anti-imaging过滤器。过滤器去除低利率的光谱图像信号。理想情况下,这个anti-imaging滤波器的截止频率$ \ omega_c = \压裂{1}{N} $(抗锯齿一样),而它的增益N美元

upsampling和将采样率的操作N美元需要一个低通滤波器的归一化截止频率美元\压裂{1}{N} $。唯一的区别是在所需的增益和过滤器的位置(速度转换之前或之后)。

的组合upsampling信号的一个因素L美元,紧随其后的是过滤,然后将采样的一个因素M美元采样率转换序列的合理因素L $ \压裂{}{M} $。这是获得upsampling率L美元其次是过滤,然后将采样率M美元。率转换操作的顺序不能减刑。放置一个过滤器,它结合了抗锯齿和anti-imaging upsampling和将采样阶段。这个过滤器是一种归一化截止频率的低通滤波器$ \ omega_c = \ min (1 / L, 1 / M)美元和获得L美元

而任何低通冷杉设计功能(如。fir1,firpm,或fdesign)可以设计一个适当的抗锯齿和anti-imaging过滤器,这个函数designMultirateFIR提供一个方便的和一个简化的接口。接下来的几节将展示使用这些函数来设计滤波器和证明的原因designMultirateFIR是首选方法。

过滤速率转换:杀害多人者,插入器,和理性的转换器

过滤速率转换包括杀害多人者,插入器和理性,转换器,所有这一切都是级联率变化的街区各种配置的过滤器。

过滤速率转换使用过滤器,upsample,downsample功能

大量毁灭指LTI过滤均匀downsampling紧随其后。一个冷杉杀害多人者可以实现如下。

  1. 设计一个抗混叠低通滤波器h

  2. 过滤输入虽然h

  3. Downsample过滤后的序列的一个因素

%定义输入序列x =兰德(60,1);%实现一个冷杉杀害多人者h = fir1 (L * 12 * 2, 1 / M);%一个任意的过滤器xDecim = downsample(过滤器(h, 1, x), M);

插值是指upsampling过滤紧随其后。实现非常类似于大量毁灭。

xInterp =过滤器(h 1 upsample (x, L));

最后,rational率转换由一个插入器,后跟一个杀害多人者(在特定的顺序)。

xRC = downsample(过滤器(h 1 upsample (x, L)), M);

过滤速率转换使用系统对象

对于流数据,系统对象dsp.FIRInterpolator,dsp.FIRDecimator,dsp.FIRRateConverter封装变化和过滤速度在一个单一的对象。例如,建设一个插入器完成如下。

firInterp = dsp.FIRInterpolator (L、h);

然后,养活一个序列步骤调用到新创建的对象。

xInterp = firInterp (x);

设计和使用杀害多人者和转换器以类似的方式。

firDecim = dsp.FIRDecimator (M h);%构造xDecim = firDecim (x);%毁掉(步骤调用)firRC = dsp.FIRRateConverter (L, M h);%构造xRC = firRC (x);%转换速率(步骤调用)

使用系统对象通常是首选,因为它们:

  • 允许一个更干净的语法。

  • 保持状态,为后续步骤调用过滤器初始coniditon。

  • 最重要的是,他们利用一个非常高效的多相算法。

构建这些对象,您需要转换因子,和冷杉系数。下面的部分将介绍如何生成适当的冷杉率转换滤波器系数。

设计速度转换过滤器使用designMultirateFIR

这个函数designMultirateFIR (L, M)自动发现根据缩放和截止频率为给定的转化率L / M美元。使用返回的冷杉系数designMultirateFIRdsp.FIRDecimator(如果L = 1美元),dsp.FIRInterpolator(如果M = 1美元),或dsp.FIRRateConverter(一般情况下)。

让我们设计一个插值过滤器:

L = 3;bInterp = designMultirateFIR (L, 1);%纯upsampling过滤器firInterp = dsp.FIRInterpolator (L, bInterp);

然后,将插入器应用于一个序列。

%创建一个序列n = (0:89)”;f = @ (t)因为(0.1 * 2 *π* t)。* exp (-0.01 * (t-25) ^ 2) + 0.2;x = f (n);%应用插入器xUp = firInterp (x);释放(firInterp);

让我们先检查插入器的原始输出,并与原序列。

plot_raw_sequences (x, xUp);

而输入之间有一些相似之处x和输出xUp,有几个关键的不同。在插值信号

  • 时域是拉伸(预期)。

  • 信号的延迟冷杉的长度的一半长度(h) / 2(表示i_0美元从今以后)。

  • 有一个瞬态响应。

比较,对齐和规模两个序列的时间域。一个插值样本xUp [k]对应一个输入时间$ t [k] = \压裂{1}{1}(k-i_0)美元

nu =(0:长度(xUp) 1);i0 =长度(bInterp) / 2;plot_scaled_sequences (n x (1 / L) * (nUp-i0) xUp, (“原始序列”,“插入器输出序列(时间调整)”60]、[0]);

同样的想法是将采样,转换的时间t [k] = Mk-i_0美元:

M = 3;bDecim = designMultirateFIR(1米);%纯将采样滤波器firDecim = dsp.FIRDecimator (M, bDecim);xDown = firDecim (x);

把它们在相同的规模和调整延迟。注意他们完全重叠。

i0 =长度(bDecim) / 2;nDown =(0:长度(xDown) 1);plot_scaled_sequences (n, x, M * nDown-i0 xDown, (“原始序列”,“杀害多人者输出序列(时间调整)”),(-10、80));

可视化的大小反应upsampling和downampling过滤器使用fvtool。这两种FIR滤波器是相同的在这种情况下,不同的增益。

hfv = fvtool (firInterp firDecim);%注意到在通频带传奇(hfv“插值滤波器L = "+ num2str (L),“大量毁灭过滤器M =”+ num2str (M));

一般理性转换可以治疗upsampling一样,将采样。截止是$ ~ \ omega_c = \ min(\压裂{1}{1},~ \压裂{1}{M}) ~ $和获得L美元。这个函数designMultirateFIR自动数据出来。

L = 5;M = 2;b = designMultirateFIR (L, M);firRC = dsp.FIRRateConverter (L, M, b);

现在让我们比较过滤与分离相结合插值/大量毁灭组件。

firDecim = dsp.FIRDecimator (M, designMultirateFIR(1米));firInterp = dsp.FIRInterpolator (L, designMultirateFIR (L, 1));hfv = fvtool (firInterp firDecim firRC);%注意到在通频带传奇(hfv“插值滤波器L = "+ num2str (L),“大量毁灭过滤器M =”+ num2str (M),“速度转换过滤器L / M =”+ num2str (L) +“/”+ num2str (M));

一旦FIRRateConverter设置,执行利率转换的步骤调用。

xRC = firRC (x);

情节的输入和滤波器的输出随时间调整的$ t [k] = \压裂{1}{1}(Mk-i_0)美元

nRC =(0:长度(xRC) 1) ';i0 =长度(b) / 2;plot_scaled_sequences (n x (1 / L) * (M * nRC-i0), xRC, (“原始序列”,”率转换器输出序列(时间调整)”,80年],[0]);

调整低通冷杉设计参数

使用designMultirateFIR您还可以调整冷杉长度、过渡宽度和阻带衰减。

调整冷杉长度

冷杉的长度可以控制l,和第三个参数P叫half-polyphase长度,其默认值是12(参考输出参数更多的细节)。让我们检查两个设计点。

%不明半身的默认为12b24 = designMultirateFIR (3,1);halfPhaseLength = 20;3 = designMultirateFIR (3 1 halfPhaseLength);

一般来说,更大的多相一半长度收益率陡峭的转换。

hfv = fvtool (b24, 1, 3, 1);传奇(hfv“多相长度= 24(默认)”,“多相长度= 40 ');

调整过渡宽度

通过指定所需的过渡宽度设计滤波器。appropirate长度将被自动派生。情节,导致对默认的过滤器设计、注意过渡宽度的差异。

TW = 0.02;顺便说一句= designMultirateFIR (3、1、TW);hfv = fvtool (b24, 1,顺便说一句,1);传奇(hfv“默认设计(冷杉长度= 72)”,“设计与TW = "+ num2str (TW) +”(冷杉长度= "+ num2str(长度(顺便说一句))+“)”);

率转换的特殊情况2:Halfband插入器和杀害多人者

使用一个过滤器(即半分数段。$ \ omega_c = \压裂{1}{2}$),您可以执行2倍采样率转换。的dsp.FIRHalfbandInterpolatordsp.FIRHalfbandDecimator对象进行插值和大量毁灭2倍使用halfband过滤器。这些系统对象使用一个高效的多相结构实现特定的转换速度。信息检索的同行dsp.IIRHalfbandInterpolatordsp.IIRHalfbandDecimator可以更有效。这些系统对象也可以使用自定义样本率。

使用可视化级响应fvtool。在插值中,过滤器保留大部分的范围从0到f / 2时衰减光谱图像。大量毁灭,过滤器通过大约一半的乐队,是0到f / 4,变弱另一半为了减少混叠。衰减的数量可以设置为任意值插值和大量毁灭。如果未指定的,就默认为80分贝。

Fs = 1 e6;hbInterp = dsp.FIRHalfbandInterpolator (“TransitionWidth”Fs / 10“SampleRate”Fs);fvtool (hbInterp)%注意获得2 (6 dB)在通频带hbDecim = dsp.FIRHalfbandDecimator (“TransitionWidth”Fs / 10“SampleRate”Fs);fvtool (hbDecim)

Equiripple设计

这个函数designMultirateFIR利用基于窗口的冷杉低通滤波器的设计。其他低通滤波器设计方法可以应用,如equiripple。对于更多的控制设计过程中,使用fdesign滤波器设计的功能。下面的示例设计杀害多人者使用fdesign.decimator函数。

M = 4;%大量毁灭的因素Fp = 80;% Passband-edge频率置= 100;% Stopband-edge频率美联社= 0.1;%通频带峰涟漪Ast = 80;%最小阻带衰减Fs = 800;%采样频率fdDecim = fdesign.decimator (M,低通滤波器的Fp,置,美联社,Ast, Fs)% #好吧
fdDecim =杀害多人者的属性:MultirateType:“杀害多人者”回应:“低通”DecimationFactor: 4规范:Fp,置,美联社,Ast的描述:{4 x1细胞}NormalizedFrequency: 0 Fs: 800 Fs_in: 800 Fs_out: 200成就:80 Fstop: 100 apas: 0.1000 Astop: 80

过滤器的规格确定20赫兹的过渡带是可以接受的80和100赫兹之间的最小衰减带组件80分贝。也感兴趣的组件的最大变形是0.05 dB(通带波纹的一半峰)。一个equiripple过滤器符合这些规范可以轻易获得的fdesign接口。

eqrDecim =设计(fdDecim,“equiripple”,“SystemObject”,真正的);测量(eqrDecim)
ans =采样率:800 Hz通频带边缘:80 Hz 3-dB点:85.621赫兹6分贝的观点:87.8492赫兹阻带边缘:100 Hz通带波纹:0.092414 dB阻带衰减器。:80.3135 dB过渡宽度:20 Hz

可视化级响应确认过滤器是一种equiripple过滤器。

fvtool (eqrDecim)

尼奎斯特过滤器和插值一致性

一个数字卷积过滤器h美元被称为一个lth尼奎斯特过滤器定期每消失L美元样品,除了中心索引。换句话说,抽样h美元的一个因素L美元收益率的冲动:

(吉隆坡)$ $ h = \ delta_k $ $

L美元th乐队理想低通滤波器,$ h [m] = sinc(\压裂{m} {L})美元例如,L美元th尼奎斯特过滤器。另一个例子是一个三角形的窗口。

L = 3;L t = linspace (3 * 3 * L, 1024);n = (3 * L: 3 * L);hLP = @ (t) sinc (t / L);hTri = @ (t) (1-abs (t / L)。* (abs (t / L) < = 1);plot_nyquist_filter (t、n hLP hTri, L);

这个函数designMultirateFIR收益率尼奎斯特过滤器,因为它是基于加权和截断版本的理想奈奎斯特过滤器。

尼奎斯特过滤器是有效实施以来lth的这些过滤器是零的系数,从而减少所需的乘法的数量。这个特性使得这些过滤器高效大量毁灭和插值。

插值的一致性

尼奎斯特过滤器保留输入的样本值即使过滤。这种行为,叫做插值的一致性一般来说并非如此,将如下所示。

插值的一致性在奈奎斯特过滤器,因为每一个系数等于零l样品(中心除外)。证明很简单。假设x_L美元upsampled版本的吗x美元(0之间插入样品)美元x_L (Ln) = x美元[n],这$ y = h * x_L $是插值信号。样本y美元均匀,得到以下方程。

$ $ y[问]= (h * x_L) (Ln) = \ [Ln-k] x_L sum_k h [k] = \ sum_m \ underbrace {h [Ln-Lm]} _{\δ(L (n - m))} x_L (Lm) = x_L (Ln) = x [n] $ $

让我们检查使用尼奎斯特滤波器插值的效果。的designMultirateFIR函数产生奈奎斯特过滤器。你可以看到在下面的描述中,输入值配合插入值。

%生成输入n = (0:20) ';xInput = (n < = 10)。* cos(π* 0.05 * n)。* (1) ^ n;L = 4;hNyq = designMultirateFIR (L, 1);firNyq = dsp.FIRInterpolator (L, hNyq);xIntrNyq = firNyq (xInput);释放(firNyq);plot_shape_and_response (hNyq xIntrNyq xInput, L, num2str (L) +“-Nyuist”);

这不是理由equiripple等低通滤波器的设计,见下图。注意,插入序列不配合低利率的输入值。另一方面,变形可能是低non-Nyquist过滤器,作为插值的权衡一致性。

hNotNyq = firpm(长度(hNyq) 1, [0 1 / 1.5 L / L 1], [1 1 0 0]);hNotNyq = hNotNyq / max (hNotNyq);%调整增益firIntrNotNyq = dsp.FIRInterpolator (L, hNotNyq);xIntrNotNyq = firIntrNotNyq (xInput);释放(firIntrNotNyq);plot_shape_and_response (hNotNyq xIntrNotNyq xInput, L,“equiripple,不是尼奎斯特”);

另请参阅

功能

对象

相关的话题