主要内容

使用半带抽取器和半带插值器的双通道滤波器组

双通道滤波器组是泛型的一种特殊情况-通道滤波器组,其中有两个滤波器分支。使用半带抽取器实现滤波器组的分析部分。使用半带插值器实现滤波器组的合成部分。

这些功能在DSP系统工具箱™中实现了半带抽取器和半带插值器。

双通道分析滤波器组接受宽带信号作为输入,并将该信号分解为低通和高通子带信号。双通道合成滤波器组接受低通和高通子带信号作为输入,利用这两个子带重构宽带信号。

在滤波器组中使用FIR半带或IIR半带滤波器。每个过滤器都有自己的优点和缺点,您的选择应该取决于应用程序的计算需求。IIR滤波器比FIR滤波器需要更少的系数来执行类似的滤波操作。IIR过滤器工作更快,需要更少的内存空间。然而,FIR滤波器总是稳定的。当FIR滤波器的系数是对称或反对称时,滤波器表现出线性相位响应。

使用音频文件输入,比较滤波器组输出的功率谱与输入信号的功率谱。然后比较实现FIR和IIR半带滤波器组的成本。

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

注意:audioDeviceWriter在MATLAB在线中不支持系统对象™。金宝app

FIR半带双通道滤波器组

设置音频文件阅读器和设备写入器。创建FIR半带抽取器和插值器来设计一个过渡宽度为2000hz和阻带衰减为80db的最小阶滤波器。最后,建立频谱分析仪,显示滤波器组输入和输出的功率谱。

AF = dsp。AudioFileReader (“speech_dft.mp3”“SamplesPerFrame”, 1024);AP = audioDeviceWriter(“SampleRate”, AF.SampleRate);filterspec =“过渡宽度和阻带衰减”;Tw = 2000;stop = 80;Firhalfbanddecim = dsp。FIRHalfbandDecimator (...“规范”filterspec,...“StopbandAttenuation”Astop,...“TransitionWidth”TW,...“SampleRate”, AF.SampleRate);Firhalfbandinterp = dsp。FIRHalfbandInterpolator (...“规范”filterspec,...“StopbandAttenuation”Astop,...“TransitionWidth”TW,...“SampleRate”房颤。SampleRate / 2,...“FilterBankInputPort”,真正的);SpecAna = dsp。简介(“SampleRate”房颤。SampleRate,...“PlotAsTwoSidedSpectrum”假的,“ReducePlotRate”假的,...“ShowLegend”,真的,...“ChannelNames”, {输入信号的“过滤输出信号”});

一次读取1024个音频样本。对输入进行滤波,得到低通和高通子带信号。这是滤波器组的分析部分。采用FIR半带插值器作为合成滤波器组。显示音频输入和合成滤波器组输出的运行功率谱。使用音频设备写入器播放输出。

~isDone(AF) audioInput = AF();[xlo,xhigh] = firhalfbanddecim(audioInput);audioOutput = firhalfbandinterp(xlo,xhigh);spectrumInput = [audioInput audioOutput];SpecAna (spectrumInput);美联社(audioOutput);结束释放(AF);释放(美联社);释放(SpecAna);

图频谱分析仪包含一个axis对象和其他类型为uiflowcontainer、uimenu、uitoolbar的对象。axis对象包含2个line类型的对象。这些对象分别表示输入信号、过滤输出信号。

IIR半带双通道滤波器组

建立IIR半波段抽取器和插值器。该滤波器是最小阶的,过渡宽度为2000hz,阻带衰减为80db。设置频谱分析仪,显示滤波器组输入和输出的功率谱。

AF = dsp。AudioFileReader (“speech_dft.mp3”“SamplesPerFrame”, 1024);AP = audioDeviceWriter(“SampleRate”, AF.SampleRate);filterspec =“过渡宽度和阻带衰减”;Tw = 2000;stop = 80;Iirhalfbanddecim = dsp。IIRHalfbandDecimator (...“规范”filterspec,“StopbandAttenuation”Astop,...“TransitionWidth”TW,“SampleRate”, AF.SampleRate);Iirhalfbandinterp = dsp。IIRHalfbandInterpolator (...“规范”filterspec,“StopbandAttenuation”Astop,...“TransitionWidth”TW,“SampleRate”房颤。SampleRate / 2,...“FilterBankInputPort”,真正的);SpecAna = dsp。简介(“SampleRate”房颤。SampleRate,...“PlotAsTwoSidedSpectrum”假的,“ReducePlotRate”假的,...“ShowLegend”,真的,...“ChannelNames”, {输入信号的“过滤输出信号”});

一次读取1024个音频样本。对输入信号进行滤波,得到低通和高通子带信号。这是滤波器组的分析部分。采用IIR半带插补器作为合成滤波器组。显示音频输入和合成滤波器组输出的运行功率谱。使用音频设备写入器播放输出。

~isDone(AF) audioInput = AF();[xlo,xhigh] = iirhalfbanddecim(audioInput);audioOutput = iirhalfbandinterp(xlo,xhigh);spectrumInput = [audioInput audioOutput];SpecAna (spectrumInput);美联社(audioOutput);结束释放(AF);释放(美联社);释放(SpecAna);

图频谱分析仪包含一个axis对象和其他类型为uiflowcontainer、uimenu、uitoolbar的对象。axis对象包含2个line类型的对象。这些对象分别表示输入信号、过滤输出信号。

比较成本

比较实现FIR和IIR半波段抽取器的成本成本函数。你可以看到IIR半波段十进制在计算上更有效率。

成本(firhalfbanddecim)
ans =带字段的结构:NumCoefficients: 27 NumStates: 50 MultiplicationsPerInputSample: 13.5000 AdditionsPerInputSample: 13
成本(iirhalfbanddecim)
ans =带字段的结构:NumCoefficients: 5 NumStates: 7 MultiplicationsPerInputSample: 2.5000 AdditionsPerInputSample: 5

比较实现FIR和IIR半带插补器的成本。同样,实现IIR半波段插值器的计算成本要比实现IIR半波段decimator的计算成本低得多。

成本(firhalfbandinterp)
ans =带字段的结构:NumCoefficients: 26 NumStates: 25 MultiplicationsPerInputSample: 26 AdditionsPerInputSample: 25
成本(iirhalfbandinterp)
ans =带字段的结构:NumCoefficients: 5 NumStates: 7 MultiplicationsPerInputSample: 5 AdditionsPerInputSample: 10

比较组延迟

你也可以比较FIR和IIR半带滤波器的组延迟。

使用fvtool在抽取器中显示FIR半带滤波器和IIR半带滤波器的群时延响应。FIR半带滤波器具有线性相位响应,组延迟为25个样本。IIR半带滤波器具有非线性相位响应,特别是在滤波器截止频率附近。恒定的组延迟可确保所有频率分量的延迟量相同。

H = fvtool(firhalfbanddecim,iirhalfbanddecim,“grpdelay”);传奇(“杉”“信息检索”)标题(“半波段Decimators的群延迟响应”) h.CurrentAxes.YLim = [0,40];

图过滤器可视化工具-组延迟包含一个轴对象和其他类型为uitoolbar, uimenu的对象。标题为Group Delay response of Halfband Decimators的axes对象包含2个类型为line的对象。这些对象表示FIR、IIR。

类似地,在插补器中,FIR半带滤波器具有线性相位响应,而IIR半带滤波器具有非线性相位响应。

H = fvtool(firhalfbandinterp,iirhalfbandinterp,“grpdelay”);传奇(“杉”“信息检索”)标题(半带插补器的群时延响应) h.CurrentAxes.YLim = [0,40];

图过滤器可视化工具-组延迟包含一个轴对象和其他类型为uitoolbar, uimenu的对象。标题为“半带插补器的组延迟响应”的坐标轴对象包含2个类型为行的对象。这些对象表示FIR、IIR。

另请参阅

对象

相关的话题