主要内容

dsp。FIRInterpolator

执行多相FIR插值

描述

dsp。FIRInterpolatorSystem object™使用整数上采样因子执行有效的多相插值l沿着第一维。

从概念上讲,FIR插值器(如图所示)由上采样器和FIR抗成像滤波器组成,FIR抗成像滤波器通常是理想带限插值滤波器的近似值。抗成像滤波器的系数可以通过分子属性,也可以由对象使用designMultirateFIR函数。

上采样器将输入的每个通道上采样到更高的速率l样本之间有-1个零。随后的FIR滤波器对上采样数据的每个通道进行滤波。得到的离散时间信号的采样率为l乘以原始采样率。

FIR插值器包含一个上采样器,后跟一个抗成像FIR滤波器。

注意,实际的对象算法实现了直接形式的FIR多相结构,这是图中所描述的组合系统的有效等效。有关详细信息,请参见算法

对输入进行上采样:

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

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

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

在特定条件下,这个System对象还支持SIMD代码生成。详细信息请参见代码生成

创建

描述

firinterp= dsp。FIRInterpolator返回一个插值因子为3的FIR插值器。设计FIR滤波器系数designMultirateFIR (3,1)函数。

firinterp= dsp。FIRInterpolator (l返回一个带有整数值的FIR插值器InterpolationFactor属性设置为l。对象根据插值因子设计其滤波系数l类创建对象时指定的designMultirateFIR (L, 1)函数。所设计的滤波器对应于一个截止点为π/的低通l以径向频率为单位。

例子

firinterp= dsp。FIRInterpolator (l“汽车”返回一个FIR插值器NumeratorSource属性设置为“汽车”。在此模式下,每当插值因子有更新时,对象使用中指定的设计方法重新设计滤波器DesignMethod

例子

firinterp= dsp。FIRInterpolator (l全国矿工工会返回一个FIR插值器InterpolationFactor属性设置为l分子属性设置为全国矿工工会

firinterp= dsp。FIRInterpolator (l方法返回一个FIR插值器InterpolationFactor属性设置为lDesignMethod属性设置为方法。当您将设计方法作为输入传递时NumeratorSource属性自动设置为“汽车”

firinterp= dsp。FIRInterpolator (___名称,值返回一个FIR插值器对象,其中每个指定的属性设置为指定的值。将每个属性名称用引号括起来。您可以将此语法用于任何先前的输入参数组合。

firinterp= dsp。FIRInterpolator (l“遗产”)返回一个FIR插值器,其中滤波器系数是使用FIR插值器设计的0.25 fir1(15日)。所设计滤波器的截止频率为0.25π弧度/样本。

属性

全部展开

除非另有说明,否则属性是nontunable,这意味着在调用对象之后不能更改它们的值。对象在调用时被锁定,而释放函数将它们解锁。

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

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

指定整数因子,l,从而提高输入信号的采样率。多相实现使用l以较低的采样率计算卷积的多相子滤波器。FIR插值器延迟和交织这些低速率的卷积以获得高速率的输出。

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

FIR滤波器系数源,指定为:

  • “属性”——分子系数通过分子财产。

  • 输入端口的——分子系数被指定为对象算法的输入。

  • “汽车”——分子系数采用设计方法自动设计DesignMethod

分子系数的抗成像FIR滤波器,指定为的幂的行向量z1。下面的等式定义了长度为1的过滤器的系统函数N+ 1:

H z n 0 N b n z n

向量b= (b(0)b(1)、…b(N)]表示滤波器系数向量。

作为一个有效的抗成像滤波器,系数通常对应于一个归一化截止频率不大于倒数的低通滤波器InterpolationFactor。使用designMultirateFIR设计这样的过滤器更一般地说,任何复杂的带通滤波器都可以使用。使用示例请参见双倍采样率使用FIR插值器

的值对滤波器系数进行缩放InterpolationFactor属性,然后再过滤信号。形成l多相subfilters,分子在必要时加上零。

依赖关系

此属性仅在设置时可见NumeratorSource“属性”

NumeratorSource设为“汽车”中规定的设计方法自动重新设计分子系数DesignMethod。要在自动设计模式下访问过滤器系数,请键入objName。分子在MATLAB中®命令提示符。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64
复数支持:是的

FIR滤波器系数的设计方法,指定为下列之一:

  • “皇帝”——凯撒法。近似抗成像低通滤波器使用designMultirateFIR函数。

  • “ZOH”——零订单保持方法。保持输入序列值。

  • “线性”——线性插值法。

依赖关系

属性时,此属性才可见NumeratorSource财产“汽车”,或者如果你通过了“汽车”关键字作为创建对象时的输入。

定点属性

为定点算术使用全精度规则的标志,指定为下列之一:

  • 真正的对象使用全精度规则计算所有内部算术和输出数据类型。这些规则提供了最精确的定点数字。在此模式下,其他定点属性不适用。对象内不发生量化。根据需要添加位,以确保不会发生舍入或溢出。

  • ——定点数据类型通过单个定点属性设置进行控制。

有关更多信息,请参见定点系统对象的全精度设置系统对象定点属性

定点运算的舍入方法。有关详细信息,请参见舍入模式

依赖关系

当满足以下条件时,此属性是不可见的,并且对数值结果没有影响:

  • FullPrecisionOverride设置为真正的

  • FullPrecisionOverride设置为ProductDataType设置为“充分精确”AccumulatorDataType设置为“充分精确”,OutputDataType设置为“与蓄电池相同”

在这些条件下,物体以全精度模式运行。

定点操作的溢出动作,指定为下列之一:

  • “包装”对象包装其定点操作的结果。

  • “饱和”——对象使其定点操作的结果饱和。

有关溢出操作的详细信息,请参见溢出模式对于定点运算。

依赖关系

当满足以下条件时,此属性是不可见的,并且对数值结果没有影响:

  • FullPrecisionOverride设置为真正的

  • FullPrecisionOverride设置为OutputDataType设置为“与蓄电池相同”ProductDataType设置为“充分精确”,AccumulatorDataType设置为“充分精确”

在这些条件下,物体以全精度模式运行。

FIR滤波器系数的数据类型,指定为:

  • 与输入相同的字长——系数的字长与输入的字长相同。计算分数长度以获得尽可能高的精度。

  • 自定义方法将系数数据类型指定为自定义数字类型CustomCoefficientsDataType财产。

系数数据类型的单词和分数长度,指定为自签名的numerictype(定点设计师)单词长度为16,分数长度为15。

依赖关系

属性设置时应用此属性CoefficientsDataType财产自定义

该对象中产品输出的数据类型,指定为以下之一:

  • “充分精确”——产品输出数据类型具有全精度。

  • “与输入相同”——对象指定产品输出数据类型与输入数据类型相同。

  • “自定义”方法将产品输出数据类型指定为自定义数字类型CustomProductDataType财产。

有关产品输出数据类型的详细信息,请参见乘法数据类型

依赖关系

此属性在设置时应用FullPrecisionOverride

产品数据类型的字和分数长度,指定为自签名数字类型,字长度为32,分数长度为30。

依赖关系

此属性仅在设置时应用FullPrecisionOverrideProductDataType“自定义”

该对象中累积操作的数据类型,指定为下列之一:

  • “充分精确”——累加操作全精度。

  • “与产品相同”——对象指定累加器数据类型与产品输出数据类型相同。

  • “与输入相同”——对象指定累加器数据类型与输入数据类型相同。

  • “自定义”——累加器数据类型被指定为自定义数字类型CustomAccumulatorDataType财产。

依赖关系

此属性在设置时应用FullPrecisionOverride

累加器数据类型的单词和分数长度,指定为自签名数字类型,单词长度为32,分数长度为30。

依赖关系

此属性仅在设置时应用FullPrecisionOverrideAccumulatorDataType“自定义”

对象输出的数据类型,指定为以下之一:

  • “与蓄电池相同”——输出数据类型与累加器输出数据类型相同。

  • “与输入相同”——输出数据类型与输入数据类型相同。

  • “与产品相同”——输出数据类型与产品输出数据类型相同。

  • “自定义”参数将输出数据类型指定为自定义数字类型CustomOutputDataType财产。

依赖关系

此属性在设置时应用FullPrecisionOverride

输出数据类型的字和分数长度,指定为自签名数字类型,字长度为16,分数长度为15。

依赖关系

此属性仅在设置时应用FullPrecisionOverrideOutputDataType“自定义”

使用

描述

例子

y= firinterp (x插值输入信号x沿着第一个维度,输出上采样和滤波值,y

y= firinterp (x全国矿工工会采用FIR滤波器,全国矿工工会,对输入信号进行插值。此配置仅在“NumeratorSource”属性设置为输入端口的

输入参数

全部展开

数据输入,指定为一个向量或矩阵。一个P——- - - - - -输入矩阵被视为独立的通道,System对象在第一个维度上插值每个通道,并生成一个L P *——- - - - - -输出矩阵,其中l是插值因子。

该对象支持可变大小的输入,不支持复杂的无符号定点输入。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数支持:是的

FIR滤波器系数,指定为行向量。

依赖关系

此输入仅在“NumeratorSource”属性设置为输入端口的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数支持:是的

输出参数

全部展开

FIR插值输出,作为一个向量或大小的矩阵返回L P *——- - - - - -,在那里l是插值因子。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数支持:是的

对象的功能

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

发行版(obj)

全部展开

freqz 离散时间滤波器的频率响应系统对象
fvtool 可视化DSP滤波器的频率响应
信息 过滤器信息系统对象
成本 估计实现过滤器的成本系统对象
多相 多速率滤波器的多相分解
generatehdl 生成量化DSP滤波器的HDL代码(要求)滤波器设计HDL编码器
impz 离散时间滤波器的脉冲响应系统对象
多项式系数 返回过滤器。系统对象结构系数
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特性
重置 的内部状态复位系统对象

例子

全部折叠

将余弦波内插2倍。在自动滤波设计模式下,将底层的D/A信号插值模式改为“线性”将底层的D/ a信号插值模型改为“ZOH”然后将信号内插5倍。

余弦波的角频率是 π 4 弧度/样品。

X = cos(pi/4*(0:39)');

设计默认过滤器

创建一个dsp。FIRInterpolator对象。该对象在上采样后使用抗成像低通滤波器。缺省情况下,抗成像低通滤波器使用designMultirateFIR函数。该函数根据您指定的插值因子设计过滤器,并将系数存储在分子财产。当插值因子为2时,对象使用designMultirateFIR (2, 1)

firinterp = dsp.FIRInterpolator(2)
Firinterp = dsp。FIRInterpolatorwith properties: InterpolationFactor: 2 NumeratorSource: 'Property' Numerator: [0 -2.0108e-04 0 7.7408e-04 0 -0.0020 0 0.0045 0 -0.0086 0 0.0153 0 -0.0257 0 0.0415 0 -0.0661 0 0.1084 0 -0.2003 0 0.6326 1 0.6326 0 -0.2003 0 0.1084 0 -0.0661 0 0.0415 0 -0.0257 0 0.0153 0 -0.0086 0 0.0045 0 -0.0020 0 ... ] Show all properties

使用可视化过滤器响应fvtool。所设计的滤波器满足红色标记的理想滤波器约束。截止频率大约是频谱的一半。

fvtool (firinterp)

图1:振幅响应(dB)包含一个轴对象。标题为Magnitude Response (dB), xlabel Normalized Frequency(乘以pi blank r a d / s a m p le), ylabel Magnitude (dB)的axes对象包含2个类型为line的对象。

插值2

将余弦信号内插2倍。

Y = firinterp(x);

绘制原始信号和插值信号。为了在同一图上绘制两个信号,必须考虑FIR插值器的输出延迟和滤波器引入的缩放。使用outputDelay函数来计算延迟插值器引入的值。将输出移动此延迟值。

可视化输入和重采样信号。由于插值系数为2,输入和输出值每隔一个样本就会重合。

[delay,FsOut] = outputDelay(firinterp)
延迟= 12
FsOut = 2
Nx = (0:length(x)-1);ty = (0:length(y)-1)/FsOut-delay;茎(泰,y,“填充”, MarkerSize = 4);持有;茎(nx x);持有;Xlim ([-5,20]) ylim([-2.5 2.5]) legend(“内插2”输入信号的“位置”“最佳”);

图包含一个轴对象。axis对象包含2个类型为stem的对象。这些对象表示插值的2,输入信号。

在自动滤波器设计模式中插入4

现在内插4倍。为了使滤波器设计根据新的插值因子自动更新,设置NumeratorSource财产“汽车”。或者,您可以传递关键字“汽车”作为创建对象时的输入。然后,对象在自动过滤设计模式下运行。每当插值因子发生变化时,对象就会更新滤波器设计。

(firinterp) firinterp发布。NumeratorSource =“汽车”;firinterp。InterpolationFactor = 4
Firinterp = dsp。FIRInterpolatorwith properties: InterpolationFactor: 4 NumeratorSource: 'Auto' DesignMethod: 'Kaiser' Show all properties

要在自动过滤器设计模式下访问过滤器系数,请键入firinterp。分子在MATLAB命令提示符中。

所设计的滤波器占用的通频带较窄,约为频谱的四分之一。

fvtool (firinterp)

图2:振幅响应(dB)包含一个轴对象。标题为Magnitude Response (dB), xlabel Normalized Frequency(乘以pi blank r a d / s a m p le), ylabel Magnitude (dB)的axes对象包含2个类型为line的对象。

将余弦信号内插4倍。

yAuto = firinterp(x);

绘制原始和重新采样的信号。重新计算延迟和输出采样率值,因为插值因子已经改变。由于插值系数为4,输入和输出值每4个输出样本重合。

[delay,FsOut] = outputDelay(firinterp);Nx = (0:length(x)-1);tyAuto = (0:length(yAuto)-1)/FsOut-delay;茎(tyAuto yAuto,“填充”, MarkerSize = 4);持有;茎(nx x);持有;Xlim ([-5,10]) ylim([-2.5 2.5]) legend(“内插4”输入信号的);

图包含一个轴对象。axis对象包含2个类型为stem的对象。这些对象表示插值4,输入信号。

指定信号插值模型

在自动设计模式下,还可以通过指定底层的D/A信号插值模型DesignMethod财产。

DesignMethod“线性”

如果你设置DesignMethod“线性”,对象采用线性插值模型。

(firinterp) firinterp发布。DesignMethod =“线性”
Firinterp = dsp。FIRInterpolatorwith properties: InterpolationFactor: 4 NumeratorSource: 'Auto' DesignMethod: 'Linear' Show all properties

使用线性插值模型对信号进行插值。

Ylinear = firinterp(x);

绘制原始信号和线性插值信号。

[delay,FsOut] = outputDelay(firinterp);Nx = (0:length(x)-1);计算输入单位中向量ylinear的输出时间tylinear = (0:length(ylinear)-1)/FsOut-delay;茎(tylinear ylinear,“填充”, MarkerSize = 4);持有;茎(nx x);持有;Xlim ([0,10]) ylim([-2.5 2.5]) legend(“线性插值4”输入信号的);

图包含一个轴对象。axis对象包含2个类型为stem的对象。这些对象表示线性插值4,输入信号。

DesignMethod“ZOH”和改变InterpolationFactor到5

如果你设置DesignMethod“ZOH”,对象使用零阶保持方法。将插值因子更改为5。

(firinterp) firinterp发布。DesignMethod =“ZOH”;firinterp。InterpolationFactor = 5
Firinterp = dsp。FIRInterpolatorwith properties: InterpolationFactor: 5 NumeratorSource: 'Auto' DesignMethod: 'ZOH' Show all properties

使用零阶保持方法插值信号。

yzh = firinterp(x);

绘制原始和ZOH插值信号。

[delay,FsOut] = outputDelay(firinterp);Nx = (0:length(x)-1);计算输入单位中向量yzoh的输出时间tyzoh = (0:length(yzoh)-1)/FsOut-delay;茎(tyzoh yzoh,“填充”, MarkerSize = 4);持有;茎(nx x);持有;Xlim ([0,10]) ylim([-1.5 1.5]) legend(“ZOH插值4”输入信号的);

图包含一个轴对象。axis对象包含2个类型为stem的对象。这些对象表示ZOH插值4,输入信号。

双倍采样率的音频信号和播放插值信号使用audioDeviceWriter对象。

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

创建一个dsp。一个udioFileReader对象。对象准备的默认音频文件的采样率为22050 Hz。

Afr = dsp。一个udioFileReader(“OutputDataType”“单一”);

创建一个dsp。FIRInterpolator对象,并指定插值因子为2。对象设计过滤器designMultirateFIR (2, 1)函数并将系数存储在分子属性。

firInterp = dsp.FIRInterpolator(2)
firInterp = dsp。FIRInterpolatorwith properties: InterpolationFactor: 2 NumeratorSource: 'Property' Numerator: [0 -2.0108e-04 0 7.7408e-04 0 -0.0020 0 0.0045 0 -0.0086 0 0.0153 0 -0.0257 0 0.0415 0 -0.0661 0 0.1084 0 -0.2003 0 0.6326 1 0.6326 0 -0.2003 0 0.1084 0 -0.0661 0 0.0415 0 -0.0257 0 0.0153 0 -0.0086 0 0.0045 0 -0.0020 0 ... ] Show all properties

创建一个audioDeviceWriter对象。指定采样率为22050 × 2,等于44100hz。

adw = audioDeviceWriter(44100)
adw = audioDeviceWriter with properties: Device: 'Default' SampleRate: 44100显示所有属性

使用文件读取器对象读取音频信号,将信号的采样率从22050 Hz增加到44100 Hz,并播放插值信号。

~isDone(afr) frame = afr();y = firInterp(frame);adw (y);结束暂停(1);释放(误判率);释放(adw);

算法

采用多相结构有效地实现了FIR插值滤波器。

为了推导多相结构,从FIR滤波器的传递函数开始:

H z b 0 + b 1 z 1 + + b N z N

N+1是FIR滤波器的长度。

你可以将这个等式重新排列如下:

H z b 0 + b l z l + b 2 l z 2 l + 。. + b N l + 1 z N l + 1 + z 1 b 1 + b l + 1 z l + b 2 l + 1 z 2 l + 。. + b N l + 2 z N l + 1 + z l 1 b l 1 + b 2 l 1 z l + b 3. l 1 z 2 l + 。. + b N z N l + 1

l是多相分量的个数,它的值等于您指定的插值因子。

你可以把这个方程写成:

H z E 0 z l + z 1 E 1 z l + + z l 1 E l 1 z l

E0(zlE1(zl、……El - 1(zlFIR滤波器是多相元件吗H(z)。

从概念上讲,FIR插值滤波器包含一个上采样器,然后是FIR低通滤波器H(z)。

FIR插值器包含一个上采样器,后跟一个抗成像FIR滤波器。

取代H(z)及其多相表示。

这是插值的多速率高贵恒等式。

对插值应用高贵恒等式将上采样操作移到滤波操作之后。这一举动使您能够以较低的速率过滤信号。

可以用换向开关替换上采样操作符、延迟块和加法器。开关从第一个支路0开始,逆时针方向移动,每次从每个支路接收一个样本。插补器有效输出l它接收到的每一个输入样本的样本。因此,FIR插值滤波器输出端的采样率为Lfs

扩展功能

版本历史

在R2012a中引入

Baidu
map