双通道滤波器组是泛型的一种特殊情况米-通道滤波器组,其中有两个滤波器分支。使用半带抽取器实现滤波器组的分析部分。使用半带插值器实现滤波器组的合成部分。
这些功能在DSP系统工具箱™中实现了半带抽取器和半带插值器。
dsp。FIRHalfbandDecimator
而且FIR半波段Decimator:利用FIR半带滤波器实现滤波器组的分析部分。
dsp。IIRHalfbandDecimator
而且IIR半波段Decimator:采用IIR半带滤波器实现滤波器组的分析部分。
dsp。FIRHalfbandInterpolator
而且FIR半带插补器:利用FIR半带滤波器实现滤波器组的合成部分。
dsp。IIRHalfbandInterpolator
而且IIR半带插补器:利用IIR半带滤波器实现滤波器组的合成部分。
双通道分析滤波器组接受宽带信号作为输入,并将该信号分解为低通和高通子带信号。双通道合成滤波器组接受低通和高通子带信号作为输入,利用这两个子带重构宽带信号。
在滤波器组中使用FIR半带或IIR半带滤波器。每个过滤器都有自己的优点和缺点,您的选择应该取决于应用程序的计算需求。IIR滤波器比FIR滤波器需要更少的系数来执行类似的滤波操作。IIR过滤器工作更快,需要更少的内存空间。然而,FIR滤波器总是稳定的。当FIR滤波器的系数是对称或反对称时,滤波器表现出线性相位响应。
使用音频文件输入,比较滤波器组输出的功率谱与输入信号的功率谱。然后比较实现FIR和IIR半带滤波器组的成本。
注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的调用一步
语法。例如,obj (x)
就变成了步骤(obj, x)
.
注意:audioDeviceWriter
在MATLAB在线中不支持系统对象™。金宝app
设置音频文件阅读器和设备写入器。创建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);
建立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);
比较实现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];
类似地,在插补器中,FIR半带滤波器具有线性相位响应,而IIR半带滤波器具有非线性相位响应。
H = fvtool(firhalfbandinterp,iirhalfbandinterp,“grpdelay”);传奇(“杉”,“信息检索”)标题(半带插补器的群时延响应) h.CurrentAxes.YLim = [0,40];
dsp。AudioFileReader
|audioDeviceWriter
|dsp。FIRHalfbandDecimator
|dsp。FIRHalfbandInterpolator
|dsp。IIRHalfbandDecimator
|dsp。IIRHalfbandInterpolator