主要内容

设计多重速率的过滤器

请注意

如果你正在使用R2016a或更早的版本,用等价的步骤语法替换每个对象调用。例如,obj (x)就变成了步骤(obj, x)

多速率过滤器是指过滤器的不同部分以不同速率工作的过滤器。这种滤波器通常在输入和输出采样率不同时使用,例如在抽取、插值或两者的组合期间。然而,在输入采样率和输出采样率相同的情况下,经常使用多采样率滤波器。在这样的滤波器中,有一个内部抽取和插值发生在一系列滤波器中。与标准的单率滤波器设计相比,这样的滤波器可以大大减少滤波器长度和计算率。

最基本的多速率滤波器是内插器、抽取器和速率转换器。这些滤波器是更先进的滤波器技术的组成部分,如滤波器组和正交镜像滤波器(QMF)。你可以在MATLAB中设计这些滤波器®和仿真软万博1manbetx件®使用designMultirateFIR函数。

该函数采用FIR奈奎斯特滤波器设计算法计算滤波器系数。为了在MATLAB中实现这些滤波器,使用这些系数作为输入dsp。FIRDecimatordsp。FIRInterpolator,dsp。FIRRateConverter系统对象。在Si万博1manbetxmulink中,使用designMultirateFIR在默认汽车模式的冷杉大量毁灭冷杉插值,冷杉率转换块。

输入到designMultirateFIR函数是插值因子和抽取因子。可选地,你可以提供半多相长度和阻带衰减。小数的插值因子设为1。类似地,内插器的抽取因子设为1。

这些例子说明了如何在MATLAB和Simulink中实现FIR小数部分。万博1manbetx同样的工作流程也适用于FIR插值器和FIR速率转换器。

在MATLAB中实现FIR小数部分

要实现FIR Decimator,您必须首先使用designMultirateFIR函数。指定感兴趣的抽取因子(通常大于1)和等于1的插值因子。你可以使用默认的半多相长度12和默认的阻带衰减80分贝。或者,您也可以指定半多相长度和阻带衰减值。

设计一种FIR抽取器,抽取因子为3,半多相长度为14。使用默认的80 dB的阻带衰减。

b = designMultirateFIR(1、3、14);

提供系数向量,b的输入dsp。FIRDecimator系统对象?。

FIRDecim = dsp.FIRDecimator (3 b);fvtool (FIRDecim);

默认情况下,fvtool显示了幅值响应。浏览fvtool查看相位响应、脉冲响应、组延迟和其他滤波器分析信息的工具栏。

滤波器的噪声正弦波输入使用FIRDecim对象。正弦波的频率是1000hz和3000hz。噪声是一个均值为零,标准差为1e-5的高斯白噪声。抽取输出将有三分之一的采样率作为输入。初始化两个dsp。简介系统对象,一个用于输入,另一个用于输出。

f1 = 1000;f2 = 3000;Fs = 8000;源= dsp。SineWave (“频率”(f1、f2),“SampleRate”Fs,...“SamplesPerFrame”, 1026);specanainput = dsp。简介(“SampleRate”Fs,...“PlotAsTwoSidedSpectrum”假的,...“ShowLegend”,真的,“YLimits”, 30 [-120],...“标题”“噪声输入信号”...“ChannelNames”,{嘈杂的输入的});specanaoutput = dsp。简介(“SampleRate”Fs / 3,...“PlotAsTwoSidedSpectrum”假的,...“ShowLegend”,真的,“YLimits”, 30 [-120],...“标题”“过滤输出”...“ChannelNames”,{“过滤输出”});

输入流,并在处理循环中过滤信号。

Iter = 1:100 input = sum(source(),2);= input + (10^-5)*randn(1026,1);输出= FIRDecim (noisyInput);specanainput (noisyInput) specanaoutput(输出)结束

输入有两个峰值:一个在1000hz,另一个在3000hz。该滤波器具有低通响应,通频带频率为0.3*pi rad/sample。采样频率为8000 Hz,即通频带频率为1200 Hz。在1000赫兹的音调是不衰减的,因为它落在滤波器的通带内。3000hz的音调被过滤掉。

类似地,您可以设计一个FIR插值器和FIR速率转换器,通过提供适当的输入到designMultirateFIR函数。为了实现过滤器,将设计的系数传递给dsp。FIRInterpolatordsp。FIRRateConverter对象。

在Simulink中实现FIR Decimator万博1manbetx

您可以在Simulink中使用FIR抽取、FIR插值和FIR速率转换模块来设计和实现FIR多速率滤波器。万博1manbetx当您设置系数来源对话框参数,你可以提供designMultirateFIR(1、2)作为指定过滤系数的参数。用。来设计DecimatordesignMultirateFIR函数时,必须指定感兴趣的抽取因子(通常大于1)和等于1的插值因子。你可以使用默认的半多相长度12和默认的阻带衰减80分贝。或者,您也可以指定半多相长度和阻带衰减值。

块选择系数计算使用designMultirateFIR函数。

类似地,您可以设计一个FIR插值器和FIR速率转换器,通过提供适当的输入到designMultirateFIR函数。

当您设置系数来源汽车,块计算系数使用designMultirateFIR函数。该函数使用块对话框中指定的抽取因子。

您可以在相应的模块中使用类似的方法设计FIR插值器和FIR速率转换器。

采样率转换

采样率转换是将一个信号的采样率从一个采样率转换为另一个采样率的过程。多级滤波器最小化了采样率转换所涉及的计算量。为了进行有效的多级速率转换dsp。SampleRateConverter对象:

  1. 接受输入样本率和输出样本率作为输入。

  2. 将设计问题划分为最优阶段。

  3. 设计各阶段所需的所有过滤器。

  4. 实现了设计。

该设计确保在中间步骤中不会发生混叠。

在本例中,将带噪正弦波信号的采样率从输入速率192khz更改为输出速率44.1 kHz。初始化采样速率转换器对象。

SRC = dsp.SampleRateConverter;

显示过滤信息。

信息(SRC)
ans = '整体插值因子:147整体抽取因子:640滤波器的数量:3乘每输入样本:27.667188系数的数量:8631滤波器:滤波器1:dsp。FIRDecimator -抽取因子:2滤波器2:dsp。FIRDecimator -抽取因子:2滤波器3:dsp。FIRRateConverter- Interpolation Factor: 147 - Decimation Factor : 160 '

SRC是一个三级滤波器:两个FIR抽取器和一个FIR速率转换器。

初始化正弦波源。正弦波有两个音调:一个在2000赫兹,另一个在5000赫兹。

源= dsp。SineWave (“频率”(2000 5000),“SampleRate”, 192000,...“SamplesPerFrame”, 1280);

初始化频谱分析仪以查看输入和输出信号。

傅氏国际= SRC.InputSampleRate;Fsout = SRC.OutputSampleRate;specanainput = dsp。简介(“SampleRate”傅氏国际,...“PlotAsTwoSidedSpectrum”假的,...“ShowLegend”,真的,“YLimits”, 30 [-120],...“标题”输入信号的...“ChannelNames”,{“输入”});specanaoutput = dsp。简介(“SampleRate”Fsout,...“PlotAsTwoSidedSpectrum”假的,...“ShowLegend”,真的,“YLimits”, 30 [-120],...“标题”率转换输出的...“ChannelNames”,{率转换输出的});

输入信号流并转换信号的采样率。

Iter = 1: 5000 input = sum(source(),2);noise = input + (10^-5)*randn(1280,1);输出= SRC (noisyinput);specanainput (noisyinput);specanaoutput(输出);结束

在[0 Fs/2]范围内显示的光谱是单侧的。对于显示输入的频谱分析仪,Fs/2为192000/2。对于显示输出的频谱分析仪,Fs/2为44100/2。因此,信号的采样率从192khz变为44.1 kHz。

参考文献

哈里斯,弗雷德里克J。通信系统的多速率信号处理.Prentice Hall PTR, 2004。

相关的话题