主要内容

dsp。IIRHalfbandInterpolator

用多相IIR进行插值

描述

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

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

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

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

要对数据进行上样和内插:

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

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

Iirhalfbandinterp = dsp。IIRHalfbandInterpolator返回一个IIR半带插值滤波器,iirhalfbandinterp,使用默认设置。在默认设置下,System对象使用半频带频率对输入数据进行采样和插值22050赫兹,过渡宽度为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是一阶或二阶allpass区段的数目。

可调:是的

依赖关系

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

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

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

可调:是的

依赖关系

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

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

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

此属性不可调。

依赖关系

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

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

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

此属性不可调。

依赖关系

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

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

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

此属性不可调。

依赖关系

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

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

此属性不可调。

依赖关系

此属性仅在设置时适用“规范”“系数”而且HasPureDelayBranch为1。

数据类型:|

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

此属性不可调。

依赖关系

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

使用

描述

例子

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

例子

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

输入参数

全部展开

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

数据类型:|
复数支持:万博1manbetx是的

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

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

数据类型:|
复数支持:万博1manbetx是的

输出参数

全部展开

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

数据类型:|
复数支持:万博1manbetx是的

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

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

例子

全部折叠

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

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

获取滤波系数

c = coeffs(IIRHalfbandInterp);

绘制幅值和相位响应

fvtool (IIRHalfbandInterp“分析”“频率”

图震级响应(dB)和相位响应包含一个轴对象。标题为幅度响应(dB)和相位响应的axis对象包含一个类型为line的对象。

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

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

注意:audioDeviceWriter中不支持系统对象™万博1manbetxMATLAB在线

设置音频文件读取器、分析滤波器组、音频设备写入器和插值滤波器。音频数据的采样率为22050赫兹。半带滤波器的阶数为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)

图震级响应(dB)包含一个轴对象。标题为幅度响应(dB)的axis对象包含两个类型为line的对象。

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

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

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

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

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

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

请注意:audioDeviceWriter在MATLAB Online中不支持系统对象万博1manbetx™。

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

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.1e3;filterspec =“滤镜顺序和过渡宽度”;订单= 51;TW = 4.1e3;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页。

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

[3] Regalia, Phillip A., Sanjit K. Mitra, P. P. Vaidyanathan。数字全通滤波器:一种通用信号处理模块。IEEE学报。1988年,第76卷第1期,第19-37页。

扩展功能

版本历史

在R2015b中引入