文档gydF4y2Ba

dsp。FIRHalfbandInterpolator系统对象gydF4y2Ba

Halfband插入器gydF4y2Ba

描述gydF4y2Ba

dsp。FIRHalfbandInterpolatorgydF4y2Ba使用两个上采样因子对输入信号进行有效的多相插值。你可以使用gydF4y2Badsp。FIRHalfbandInterpolatorgydF4y2Ba实现双带滤波器组的合成部分,合成来自低通和高通子带的信号。gydF4y2Badsp。FIRHalfbandInterpolatorgydF4y2Ba采用FIR等纹波设计构造半带滤波器,采用多相实现对输入进行滤波。该对象支持定点操作和AR万博1manbetxM Cortex代码生成。gydF4y2Ba

上采样和插值你的数据:gydF4y2Ba

  1. 定义并设置你的半带插值器。看到gydF4y2Ba建设gydF4y2Ba.gydF4y2Ba

  2. 调用gydF4y2Ba一步gydF4y2Ba的特性对输入信号进行滤波gydF4y2Badsp。FIRHalfbandInterpolatorgydF4y2Ba.输入信号可以是实值或复值列向量或矩阵。如果输入信号是一个矩阵,矩阵的每一列都被视为一个独立的通道。gydF4y2Ba

请注意gydF4y2Ba

从R2016b开始,而不是使用gydF4y2Ba一步gydF4y2Ba方法来执行System对象™定义的操作,则可以使用参数调用该对象,就像调用函数一样。例如,gydF4y2BaY = step(obj,x)gydF4y2Ba而且gydF4y2BaY = obj(x)gydF4y2Ba请执行相同的操作。gydF4y2Ba

建设gydF4y2Ba

Firhalfbandinterp = dsp。FIRHalfbandInterpolatorgydF4y2Ba返回FIR半带内插滤波器,gydF4y2BafirhalfbandinterpgydF4y2Ba,使用默认设置。调用gydF4y2Ba一步gydF4y2Ba使用11025 Hz的半带频率、4.1 kHz的过渡宽度和80 dB的阻带衰减对输入数据进行采样和插值。gydF4y2Ba

firhalfbandinterpgydF4y2Ba= dsp。FIRHalfbandInterpolator (gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba返回一个半带插值器,带有一个或多个指定的附加属性gydF4y2Ba名称,值gydF4y2Ba对参数。gydF4y2Ba的名字gydF4y2Ba属性名称和gydF4y2Ba价值gydF4y2Ba对应的值。gydF4y2Ba的名字gydF4y2Ba必须出现在单引号(' ')内。您可以以任意顺序指定多个名称-值对参数gydF4y2BaName1, Value1,…,的家gydF4y2Ba.gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

过滤器设计参数,指定为字符向量。当你设置gydF4y2Ba规范gydF4y2Ba对于下列之一,您可以从三个可用设计参数中选择两个来设计FIR半带滤波器。gydF4y2Ba

  • “过渡宽度和阻带衰减”gydF4y2Ba—过渡宽度和阻带衰减是设计参数。gydF4y2Ba

  • 滤波器顺序和阻带衰减gydF4y2Ba——滤波器阶数和阻带衰减是设计参数。gydF4y2Ba

  • 滤镜顺序和过渡宽度gydF4y2Ba——滤波器顺序和过渡宽度是设计参数。gydF4y2Ba

采用最优等纹波滤波器设计方法设计滤波器。gydF4y2Ba

当你设置gydF4y2Ba规范gydF4y2Ba来gydF4y2Ba“系数”gydF4y2Ba,则直接通过参数指定半带滤波器系数gydF4y2Ba分子gydF4y2Ba财产。gydF4y2Ba

筛选顺序,指定为偶数正整数。gydF4y2Ba

依赖关系gydF4y2Ba

设置时应用此属性gydF4y2Ba规范gydF4y2Ba要么gydF4y2Ba滤波器顺序和阻带衰减gydF4y2Ba或gydF4y2Ba滤镜顺序和过渡宽度gydF4y2Ba.gydF4y2Ba

止带衰减(以dB为单位),指定为正实标量。gydF4y2Ba

依赖关系gydF4y2Ba

设置时应用此属性gydF4y2Ba规范gydF4y2Ba要么gydF4y2Ba滤波器顺序和阻带衰减gydF4y2Ba或gydF4y2Ba“过渡宽度和阻带衰减”gydF4y2Ba.gydF4y2Ba

过渡宽度(以Hz为单位),指定为正实标量。转换宽度的值(Hz)必须小于输入采样率的1/2。gydF4y2Ba

依赖关系gydF4y2Ba

设置时应用此属性gydF4y2Ba规范gydF4y2Ba要么gydF4y2Ba“过渡宽度和阻带衰减”gydF4y2Ba或gydF4y2Ba滤镜顺序和过渡宽度gydF4y2Ba.gydF4y2Ba

FIR半带滤波器系数,指定为行向量。系数必须符合FIR半波段脉冲响应格式。关于该格式的详细介绍,请参见gydF4y2BaHalfband过滤器gydF4y2Ba而且gydF4y2BaFIR半带滤波器设计gydF4y2Ba.如果过滤器的一半阶数,gydF4y2Ba(长度(分子)- 1)/2gydF4y2Ba是偶数,从第一个系数开始的其他系数都必须是零,除了中心系数必须是1.0。如果滤波器的一半阶数是奇数,则中心为1.0的交替零序列从第二个系数开始。gydF4y2Ba

依赖关系gydF4y2Ba

设置时应用此属性gydF4y2Ba规范gydF4y2Ba来gydF4y2Ba“系数”gydF4y2Ba.gydF4y2Ba

输入采样率(以Hz为单位),指定为正实标量。输入采样率默认为44100hz。如果将过渡宽度指定为滤波器设计参数之一,则过渡宽度不能超过输入采样率的1/2。gydF4y2Ba

合成滤波器组,指定为任意一种gydF4y2Ba假gydF4y2Ba或gydF4y2Ba真正的gydF4y2Ba.如果此属性为gydF4y2Ba假gydF4y2Ba,gydF4y2Badsp。FIRHalfbandInterpolatorgydF4y2Ba是在调用算法时用于单个向量值或矩阵值输入的插值滤波器。如果此属性为gydF4y2Ba真正的gydF4y2Ba,gydF4y2Badsp。FIRHalfbandInterpolatorgydF4y2Ba是一个合成滤波器组,算法接受两个输入,低通子带和高通子带进行合成。gydF4y2Ba

定点属性gydF4y2Ba

系数的字和分数长度,指定为有符号或无符号gydF4y2BanumerictypegydF4y2Ba对象。默认的,gydF4y2Banumerictype (16)gydF4y2Ba对应于具有16位系数和基于系数值确定的分数长度的有符号数字类型对象,以提供尽可能高的精度。gydF4y2Ba

此属性不可调。gydF4y2Ba

输出的单词长度与输入的单词长度相同。计算输出的部分长度,以便输出的整个动态范围可以表示而不溢出。有关如何计算输出的分数长度的详细信息,请参见gydF4y2BaFIR滤波器中避免溢出的定点精度规则gydF4y2Ba.gydF4y2Ba

用于输出定点操作的舍入方法,指定为字符向量。有关舍入模式的详细信息,请参见gydF4y2Ba精度和范围gydF4y2Ba.gydF4y2Ba

方法gydF4y2Ba

重置gydF4y2Ba 复位FIR半带插补器内部状态gydF4y2Ba
一步gydF4y2Ba 滤波器输入与FIR半带插值器gydF4y2Ba

有关其他方法,请参见gydF4y2Ba过滤系统对象的分析方法gydF4y2Ba.gydF4y2Ba

方法支持的分析方法的完整列表万博1manbetxgydF4y2Badsp。FIRHalfbandInterpolatorgydF4y2Ba对象,输入gydF4y2Badsp.FIRHalfbandInterpolator.helpFilterAnalysisgydF4y2Ba在MATLAB中gydF4y2Ba®gydF4y2Ba命令提示符。gydF4y2Ba

所有系统对象通用gydF4y2Ba
释放gydF4y2Ba

允许系统对象属性值更改gydF4y2Ba

例子gydF4y2Ba

全部展开gydF4y2Ba

创建一个低通半带插值滤波器,将数据上采样到44.1 kHz。指定滤波器阶数为52,过渡宽度为4.1 kHz。gydF4y2Ba

Fs = 44.11 e3;InputSampleRate = Fs/2;Order = 52;TW = 4.11 e3;filterspec =gydF4y2Ba滤镜顺序和过渡宽度gydF4y2Ba;Firhalfbandinterp = dsp。FIRHalfbandInterpolator (gydF4y2Ba...gydF4y2Ba“规范”gydF4y2Bafilterspec,gydF4y2Ba“FilterOrder”gydF4y2Ba订单,gydF4y2Ba...gydF4y2Ba“TransitionWidth”gydF4y2BaTW,gydF4y2Ba“SampleRate”gydF4y2Ba, InputSampleRate);gydF4y2Ba

画出脉冲响应。0阶系数为延迟26个样本,等于滤波器的群延迟。这就产生了一个因果半带滤波器。gydF4y2Ba

fvtool (firhalfbandinterpgydF4y2Ba“分析”gydF4y2Ba,gydF4y2Ba“冲动”gydF4y2Ba);gydF4y2Ba

绘制幅值和相位响应。gydF4y2Ba

fvtool (firhalfbandinterpgydF4y2Ba“分析”gydF4y2Ba,gydF4y2Ba“频率”gydF4y2Ba);gydF4y2Ba

利用半带分析滤波器组和插值滤波器从语音信号中提取低频子带。gydF4y2Ba

请注意gydF4y2Ba:此示例仅在R2016b及以上版本运行。如果您正在使用较早的版本,请将对函数的每次调用替换为等效的调用gydF4y2Ba一步gydF4y2Ba语法。例如,myObject(x)变成step(myObject,x)。gydF4y2Ba

设置音频文件读取器,分析滤波器组,音频设备写入器和插值滤波器。音频数据的采样率为22050 Hz。半带滤波器的阶数为52,过渡宽度为2 kHz。gydF4y2Ba

Afr = dsp。AudioFileReader (gydF4y2Ba“speech_dft.mp3”gydF4y2Ba,gydF4y2Ba“SamplesPerFrame”gydF4y2Ba, 1024);filterspec =gydF4y2Ba滤镜顺序和过渡宽度gydF4y2Ba;Order = 52;Tw = 2000;Firhalfbanddecim = dsp。FIRHalfbandDecimator (gydF4y2Ba...gydF4y2Ba“规范”gydF4y2Bafilterspec,gydF4y2Ba“FilterOrder”gydF4y2Ba订单,gydF4y2Ba...gydF4y2Ba“TransitionWidth”gydF4y2BaTW,gydF4y2Ba“SampleRate”gydF4y2Ba, afr.SampleRate);Firhalfbandinterp = dsp。FIRHalfbandInterpolator (gydF4y2Ba...gydF4y2Ba“规范”gydF4y2Bafilterspec,gydF4y2Ba“FilterOrder”gydF4y2Ba订单,gydF4y2Ba...gydF4y2Ba“TransitionWidth”gydF4y2BaTW,gydF4y2Ba“SampleRate”gydF4y2Ba, afr.SampleRate / 2);adw = audioDeviceWriter(gydF4y2Ba“SampleRate”gydF4y2Ba, afr.SampleRate);gydF4y2Ba

查看半带滤波器的幅值响应。gydF4y2Ba

fvtool (firhalfbanddecim)gydF4y2Ba

从音频文件中读取1024帧样本的语音信号。将语音信号滤波成低通和高通子带,半带频率为5512.5 Hz。通过插值低通子带重构语音信号的低通近似。播放过滤后的输出。gydF4y2Ba

而gydF4y2Ba~isDone(afr) audioframe = afr();Xlo = firhalfbanddecim(音频帧);yellow = firhalfbandinterp(xlo);adw (ylow);gydF4y2Ba结束gydF4y2Ba

等待音频文件播放完毕,关闭输入文件,释放音频输出资源。gydF4y2Ba

释放(误判率);释放(adw);gydF4y2Ba

使用半带抽取器和插值器实现双通道滤波器组。本例使用音频文件输入,并显示滤波器组输出的功率谱与输入没有显著差异。gydF4y2Ba

请注意gydF4y2Ba:此示例仅在R2016b及以上版本运行。如果您正在使用较早的版本,请将对函数的每次调用替换为等效的调用gydF4y2Ba一步gydF4y2Ba语法。例如,myObject(x)变成step(myObject,x)。gydF4y2Ba

设置音频文件阅读器和设备写入器。构造FIR半波段抽取器和插值器。最后,搭建频谱分析仪,显示滤波器组输入输出的功率谱。gydF4y2Ba

AF = dsp。AudioFileReader (gydF4y2Ba“speech_dft.mp3”gydF4y2Ba,gydF4y2Ba“SamplesPerFrame”gydF4y2Ba, 1024);AP = audioDeviceWriter(gydF4y2Ba“SampleRate”gydF4y2Ba, AF.SampleRate);filterspec =gydF4y2Ba滤镜顺序和过渡宽度gydF4y2Ba;Order = 52;Tw = 2000;Firhalfbanddecim = dsp。FIRHalfbandDecimator (gydF4y2Ba...gydF4y2Ba“规范”gydF4y2Bafilterspec,gydF4y2Ba“FilterOrder”gydF4y2Ba订单,gydF4y2Ba...gydF4y2Ba“TransitionWidth”gydF4y2BaTW,gydF4y2Ba“SampleRate”gydF4y2Ba, AF.SampleRate);Firhalfbandinterp = dsp。FIRHalfbandInterpolator (gydF4y2Ba...gydF4y2Ba“规范”gydF4y2Bafilterspec,gydF4y2Ba“FilterOrder”gydF4y2Ba订单,gydF4y2Ba...gydF4y2Ba“TransitionWidth”gydF4y2BaTW,gydF4y2Ba“SampleRate”gydF4y2Ba房颤。SampleRate / 2,gydF4y2Ba...gydF4y2Ba“FilterBankInputPort”gydF4y2Ba,真正的);SpecAna = dsp。简介(gydF4y2Ba“SampleRate”gydF4y2Ba房颤。SampleRate,gydF4y2Ba...gydF4y2Ba“PlotAsTwoSidedSpectrum”gydF4y2Ba假的,gydF4y2Ba“ReducePlotRate”gydF4y2Ba假的,gydF4y2Ba...gydF4y2Ba“ShowLegend”gydF4y2Ba,真的,gydF4y2Ba...gydF4y2Ba“ChannelNames”gydF4y2Ba, {gydF4y2Ba输入信号的gydF4y2Ba,gydF4y2Ba“过滤输出信号”gydF4y2Ba});gydF4y2Ba

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

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

更多关于gydF4y2Ba

全部展开gydF4y2Ba

算法gydF4y2Ba

全部展开gydF4y2Ba

参考文献gydF4y2Ba

[1]哈里斯,F.J.通信系统的多速率信号处理,普伦蒂斯霍尔,2004年,第208-209页。gydF4y2Ba

扩展功能gydF4y2Ba

在R2014b中引入gydF4y2Ba

这个话题有用吗?gydF4y2Ba