主要内容

多重速率的过滤MATLAB金宝app

多速率滤波器是改变采样输入信号的采样率的数字滤波器。速率转换的过程包括一个上采样器、一个下采样器和一个低通滤波器来处理信号。

最基本的多速率滤波器是插值器、抽取器和非整数采样率转换器。这些滤波器是更先进的滤波器技术的组成部分,如信道化器、信道合成器、双通道滤波器组和正交镜像滤波器(QMF)。你可以在MATLAB中设计这些滤波器®和仿真软金宝app件®使用designMultirateFIR函数。

designMultirateFIR函数根据指定的速率转换因子自动设计一个抗混叠FIR滤波器。输入到designMultirateFIR函数是插值因子和抽取因子。您可以选择提供半多相长度或过渡宽度以及阻带衰减。要设计抽取器,请将插值因子设置为1。同样,要设计插值器,请将抽取因子设置为1。

在MATLAB中实现多速率滤波器,使用返回的系数designMultirateFIR函数的输入dsp。FIRDecimator数字信号处理器,dsp。FIRRateConverter系统对象。

b = designMultirateFIR(1、4);firDecim = dsp.FIRDecimator (4 b)
firDecim = dsp。FIRDecimatorwith properties: DecimationFactor: 4 NumeratorSource: 'Property' Numerator: [0 -2.2355e-05 -5.0269e-05 -5.2794e-05 0 1.0256e-04 1.9352e-04 … ] Structure: 'Direct form'

或者,您可以设置SystemObject国旗的designMultirateFIR函数符合事实的.该功能设计并自动创建适当的费率转换对象。

firDecim = designMultirateFIR (1, 4,“SystemObject”,真正的)
firDecim = dsp。FIRDecimatorwith properties: DecimationFactor: 4 NumeratorSource: 'Property' Numerator: [0 -2.2355e-05 -5.0269e-05 -5.2794e-05 0 1.0256e-04 1.9352e-04 … ] Structure: 'Direct form'

在Si金宝appmulink中,使用designMultirateFIR函数的默认值汽车模式的冷杉大量毁灭冷杉插值,FIR速率转换块。您还可以将这些系数指定为参数或通过输入端口传递它们。

这些例子说明了如何在MATLAB和Simulink中实现FIR小数部分。金宝app您可以将此工作流应用于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函数表示幅度响应。通过Filter Visualization Tool工具栏导航,可以查看相位响应、脉冲响应、组延迟和其他滤波器分析信息。

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

f1 = 1000;f2 = 3000;Fs = 8000;源= dsp。SineWave (“频率”(f1、f2),“SampleRate”Fs,...“SamplesPerFrame”, 1026);specanainput = dsp。简介(“SampleRate”Fs,...“绘制双侧面光谱”错误的...“ShowLegend”,真的,“YLimits”, 40 [-120],...“头衔”“噪声输入信号”...“ChannelNames”, {嘈杂的输入的}); specanaoutput=dsp.SpectrumAnalyzer(“SampleRate”Fs / 3,...“绘制双侧面光谱”错误的...“ShowLegend”,真的,“YLimits”, 40 [-120],...“头衔”“过滤输出”...“ChannelNames”, {“过滤输出”});

流化输入并在处理循环中对其进行过滤。

注意:如果您正在使用R2016a或更早的版本,请将对对象的每个调用替换为等效的一步语法。例如,obj (x)变成步骤(obj,x)

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

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

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

在Simulink中实现FIR Decimator金宝app

您可以使用FIR抽取、FIR插值和FIR速率转换模块在Simulink™中设计和实现FIR多速率滤波器。金宝app

打开模型“multiratefiltering.slx”

输入信号是两个频率的带噪正弦信号:一个为1000 Hz,另一个为3000 Hz。信号的采样率为8000 Hz,另一个为3000 Hz样品每帧正弦波块的参数设置为1026。加到信号上的噪声是一个均值为零、方差为1e-10的高斯白噪声。

系数来源参数设置为对话框参数,冷杉滤波器系数参数设置为designMultirateFIR(1、2).该函数使用默认的半多相长度12和默认的阻带衰减80 dB。设计滤波器的幅度响应如下所示:

运行模型。

第一个频谱分析仪显示原始信号的频谱,第二个频谱分析仪显示被抽取信号的频谱。因为率的选择参数设置为允许多重速率的处理,在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);

初始化两个频谱分析仪,一个查看输入信号的频谱,另一个查看速率转换输出信号的频谱。的“绘制双侧面光谱”财产dsp。简介对象设置为“假”,表示所示光谱在[0]范围内是单侧的Fs/ 2)Fs为信号的采样率。

傅氏国际= SRC.InputSampleRate;Fsout = SRC.OutputSampleRate;specanainput = dsp。简介(“SampleRate”,Fsin,...“绘制双侧面光谱”错误的...“ShowLegend”,真的,“YLimits”, 30 [-120],...“头衔”输入信号的...“ChannelNames”, {“输入”}); specanaoutput=dsp.SpectrumAnalyzer(“SampleRate”,Fsout,...“绘制双侧面光谱”错误的...“ShowLegend”,真的,“YLimits”, 30 [-120],...“头衔”“速率转换输出”...“ChannelNames”, {“速率转换输出”});

流输入信号和转换信号的采样率使用采样率转换器。在两个频谱分析仪中查看输入和输出信号的频谱。

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

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

工具书类

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

相关话题