主要内容

dsp。IIRHalfbandInterpolator

用多相IIR插值两倍

描述

dsp。IIRHalfbandInterpolator系统对象™以两倍的倍数对输入信号进行高效的多相插值。要设计半带滤波器,可以指定对象使用椭圆设计或准线性相位设计。对象使用这些设计方法来计算滤波器系数。为了过滤输入,该对象使用多相结构。多相结构中的全通滤波器采用最小乘子形式。

椭圆设计引入非线性相位,并使用比准线性设计更少的系数来创建滤波器。准线性相位设计以增加额外系数为代价克服了相位非线性。

或者,您可以直接指定滤波器系数,而不是使用设计方法来设计半带滤波器。当您选择此选项时,多相实现的两个分支中的全通滤波器可以是最小乘法器形式或波数字形式。

你也可以使用dsp。IIRHalfbandInterpolator对象实现双带滤波器组的合成部分,以合成来自低通和高通子带的信号。

上采样和插值你的数据:

  1. 创建dsp。IIRHalfbandInterpolator对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

Iirhalfbandinterp = dsp。IIRHalfbandInterpolator返回一个IIR半带插值滤波器,iirhalfbandinterp,使用默认设置。在默认设置下,System对象使用的半频带频率对输入数据进行采样和插值22050Hz,过渡宽度为4100的阻带衰减80dB。

例子

iirhalfbandinterp= dsp。IIRHalfbandInterpolator (名称,值返回一个IIR半带插值器,带有一个或多个指定的附加属性名称,值对参数。

例子:Iirhalfbandinterp = dsp。IIRHalfbandInterpolator (“规范”,滤波器顺序和阻带衰减)创建一个滤波器顺序为的IIR半带插值器对象9和阻带衰减设置为80dB。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

过滤器设计参数,指定为字符向量。当你设置规范对于其中一个过滤器设计选项,可以使用相应的参数指定过滤器设计参数FilterOrderStopbandAttenuation,TransitionWidth属性。此外,您还可以使用指定设计方法DesignMethod.当你设置规范“系数”,可以直接指定系数。

IIR半带滤波器的阶数,指定为正标量整数。如果你设置DesignMethod“椭圆”,然后FilterOrder必须是大于1的奇数。如果你设置DesignMethod“准线性阶段”,然后FilterOrder一定是4的倍数。

依赖关系

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

IIR半带滤波器阻带中所需的最小衰减,指定为正实标量。单位为dB。

依赖关系

此属性仅在设置时应用规范滤波器顺序和阻带衰减“过渡宽度和阻带衰减”

数据类型:|

IIR半带滤波器的过渡宽度,指定为正实标量。单位是Hz。过渡宽度的值必须小于输入采样率的一半。

依赖关系

此属性仅在设置时应用规范“过渡宽度和阻带衰减”滤镜顺序和过渡宽度

数据类型:|

IIR半带滤波器的设计方法,具体为“椭圆”“准线性阶段”.属性设置为时“准线性阶段”,多相结构的第一个分支是一个纯延迟,这导致近似线性相位响应。

依赖关系

此属性仅在设置时应用规范到任何可接受的值,除了“系数”

输入采样率,指定为正实标量。单位是Hz。

依赖关系

此属性仅在设置时应用规范到任何可接受的值,除了“系数”

数据类型:|

选项,使用对象作为合成过滤器组,指定为逻辑值。如果此属性为dsp。IIRHalfbandInterpolator充当插值器。如果此属性为真正的,然后dsp。IIRHalfbandInterpolator作为一个合成滤波器组,算法接受两个输入:低通和高通子带。

依赖关系

此属性仅在设置时应用规范到任何可接受的值,除了“系数”

内部全通滤波器实现结构,指定为“最低乘数”“波数字滤波器”.每个结构使用不同的系数集,独立存储在相应的对象属性中。

此属性不可调。

依赖关系

此属性仅在设置时应用“规范”“系数”

第一个分支的所有通多项式滤波器系数,指定为N——- - - - - -1N——- - - - - -2矩阵。N是一阶或二阶全通段的数目。

可调:是的

依赖关系

此属性仅在设置时应用规范“系数”结构“最低乘数”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

第二分支的所有通多项式滤波器系数,指定为N——- - - - - -1N——- - - - - -2矩阵。N是一阶或二阶全通段的数目。

可调:是的

依赖关系

此属性仅在设置时应用规范“系数”结构“最低乘数”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

波数字滤波器形式的第一分支的全通滤波器系数,指定为N——- - - - - -1N——- - - - - -2矩阵。N是一阶或二阶全通段的数目。所有元素的绝对值必须小于或等于1

此属性不可调。

依赖关系

此属性仅在设置时应用规范“系数”结构“波数字滤波器”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

波数字滤波器形式的第二分支的全通滤波器系数,指定为N——- - - - - -1N——- - - - - -2矩阵。N是一阶或二阶全通段的数目。所有元素的绝对值必须小于或等于1

此属性不可调。

依赖关系

此属性仅在设置时应用规范“系数”结构“波数字滤波器”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

标志,使第一个allpass分支成为延迟,指定为逻辑标量。当此属性为true时,第一个分支被视为纯延迟,而属性AllpassCoefficients1WDFCoefficients1不要申请。

此属性不可调。

依赖关系

此属性仅在设置时应用规范“系数”

第一分支延迟的长度,指定为一个有限的正标量。此属性的值指定了可以将输入延迟到第一个分支的样本数量。

此属性不可调。

依赖关系

此属性仅当您设置“规范”“系数”HasPureDelayBranch为1。

数据类型:|

选项,将第二个分支的最后一部分视为一阶,并指定为逻辑标量。当这个性质是1而第二个分支的系数在an中N-by-2矩阵,对象忽略矩阵最后一行的第二个元素。第二分支的最后一部分就变成了一阶部分。当此属性设置为0,第二分支的最后一段为二阶段。当第二个分支的系数在an中N-by-1矩阵,此属性将被忽略。

此属性不可调。

依赖关系

此属性仅在设置时应用规范“系数”

使用

描述

例子

y= iirhalfbandinterp (x1上采样2并对输入信号进行插值x1使用IIR半带插值器,iirhalfbandinterp

例子

y= iirhalfbandinterp (x1x2实现了输入的半波段合成滤波器组x1x2x1半带分析滤波器组的低通输出和x2是半带分析滤波器组的高通输出。dsp。IIRHalfbandInterpolator时才实现合成筛选器组FilterBankInputPort属性是真正的

输入参数

全部展开

IIR半带插补器的数据输入,指定为列向量或矩阵。这个信号是半带分析滤波器组的低通输出。如果输入信号是一个矩阵,矩阵的每一列都被视为一个独立的通道。

数据类型:|
复数支持:金宝app是的

第二个数据输入到合成滤波器组,指定为列向量或矩阵。这个信号是半带分析滤波器组的高通输出。如果输入信号是一个矩阵,矩阵的每一列都被视为一个独立的通道。

两个输入的大小、数据类型和复杂性必须相同。

数据类型:|
复数支持:金宝app是的

输出参数

全部展开

插值器的输出,作为列向量或矩阵返回。插值器输出的行数是输入信号的行数的两倍。

数据类型:|
复数支持:金宝app是的

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

freqz 离散时间滤波器的频率响应系统对象
fvtool 可视化DSP滤波器的频率响应
信息 关于过滤器的信息系统对象
成本 估计实现过滤器的成本系统对象
多相 多速率滤波器的多相分解
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

为44.1 kHz采样的数据创建最小阶低通IIR半带插值滤波器。该滤波器的过渡宽度为4.1 kHz,阻带衰减为80 dB。

IIRHalfbandInterp = dsp。IIRHalfbandInterpolator (...“DesignMethod”“准线性阶段”);

获取滤波器系数

c = coeffs(IIRHalfbandInterp);

绘制幅值和相位响应

fvtool (IIRHalfbandInterp“分析”“频率”

{

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

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

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

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

Afr = dsp。一个udioFileReader(“speech_dft.mp3”“SamplesPerFrame”, 1024);filterspec =滤镜顺序和过渡宽度;订单= 21;Tw = 2000;IIRHalfbandDecim = dsp。IIRHalfbandDecimator (...“规范”filterspec,“FilterOrder”订单,...“TransitionWidth”TW,“SampleRate”, afr.SampleRate);IIRHalfbandInterp = dsp。IIRHalfbandInterpolator (...“规范”filterspec,“FilterOrder”订单,...“TransitionWidth”TW,“SampleRate”, afr.SampleRate / 2);ap = audioDeviceWriter(“SampleRate”, afr.SampleRate);

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

fvtool (IIRHalfbandDecim)

{

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

~isDone(afr) audioframe = afr();xlo = IIRHalfbandDecim(audioframe);yellow = IIRHalfbandInterp(xlo);美联社(ylow);结束

等待音频文件结束,关闭输入文件,释放音频输出资源。

释放(误判率);释放(美联社);

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

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

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

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

AF = dsp。一个udioFileReader(“speech_dft.mp3”“SamplesPerFrame”, 1024);AP = audioDeviceWriter(“SampleRate”, AF.SampleRate);filterspec =滤镜顺序和过渡宽度;订单= 51;Tw = 2000;IIRHalfbandDecim = dsp。IIRHalfbandDecimator (...“规范”filterspec,“FilterOrder”订单,...“TransitionWidth”TW,“SampleRate”, AF.SampleRate);IIRHalfbandInterp = dsp。IIRHalfbandInterpolator (...“规范”filterspec,“FilterOrder”订单,...“TransitionWidth”TW,“SampleRate”房颤。SampleRate / 2,...“FilterBankInputPort”,真正的);光谱分析仪(“SampleRate”房颤。SampleRate,...“PlotAsTwoSidedSpectrum”假的,...“ShowLegend”,真的,...“ChannelNames”, {输入信号的“过滤输出信号”});

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

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

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

为44.1 kHz采样的数据创建半带插值滤波器。滤波器阶数为51,过渡宽度为4.1 kHz。使用滤波器对多通道输入进行上采样和插值。

Fs = 44.11 e3;filterspec =滤镜顺序和过渡宽度;订单= 51;TW = 4.11 e3;Iirhalfbandinterp = dsp。IIRHalfbandInterpolator (...“规范”filterspec,...“FilterOrder”订单,...“TransitionWidth”TW,...“SampleRate”Fs);X = randn(1024,4);Y = iirhalfbandinterp(x);

算法

全部展开

参考文献

[1]郎,M。全通滤波器设计与应用。IEEE信号处理汇刊。第46卷第9期,1998年9月,页2505-2514。

哈里斯,F.J.通信系统多速率信号处理“,.Prentice Hall, 2004, pp. 208-209。

Regalia, Phillip A, Sanjit K. Mitra, P. P. Vaidyanathan。数字全通滤波器:一种多功能信号处理构建模块IEEE论文集。第76卷第1期,1988年,第19-37页。

扩展功能

版本历史

在R2015b中引入