主要内容

dsp。FIRInterpolator

多相冷杉插入器

描述

dsp。FIRInterpolatorSystem Object™Upsamples由整数上采样系数的输入L.沿着第一个维度。FIR插值器(如图所示)概念上由上采样器和FIR反成像滤波器组成,后者通常是理想的带限插值滤波器的近似。反成像滤波器的系数可以通过分子属性,或可由对象使用DesignMultirateFir.函数。

Upsampler通过插入将输入的每个通道上升至更高的速率L.样品之间-1零。遵循的FIR滤波器过滤ups采样数据的每个通道。产生的离散时间信号具有采样率L.乘以原始采样率。

FIL Interpolator包含一个upsampler,后跟防映像FIR滤波器。

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

对输入进行上采样:

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

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

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

在特定条件下,System对象也支持SIMD代码生成。金宝app有关详细信息,请参见代码生成

创建

描述

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

firintep.= dsp.firinterpolator(L.的)返回具有整数值的FIR插值器InterpolationFactor财产设定为L..该对象基于插值系数设计其滤波器系数L.使用使用的创建对象时指定designMultirateFIR (L, 1)函数。设计的滤波器对应一个截止点为π/的低通滤波器L.以径向频率为单位。

例子

firintep.= dsp.firinterpolator(L.“汽车”的)返回一个FIR插值器NumeratorSource.财产设定为“汽车”.在这种模式下,每当插值因子发生更新时,对象使用中指定的设计方法重新设计滤波器DesignMethod

例子

firintep.= dsp.firinterpolator(L.全国矿工工会的)返回一个FIR插值器InterpolationFactor财产设定为L.分子财产设定为全国矿工工会

firintep.= dsp.firinterpolator(L.方法的)返回一个FIR插值器InterpolationFactor财产设定为L.DesignMethod财产设定为方法.当您将设计方法作为输入传递时NumeratorSource.属性自动设置为“汽车”

firintep.= dsp.firinterpolator(___名称,价值的)将每个指定属性设置为指定值的每个指定属性返回FIR内插器对象。将每个属性名称括起引号。您可以使用以前的任何输入参数组合使用此语法。

firintep.= dsp.firinterpolator(L.“遗产”)返回一个FIR插值器,其中滤波器系数的设计使用fir1(15,0.25).设计的过滤器具有0.25π弧度/样品的截止频率。

属性

全部展开

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

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

有关更改属性值的更多信息,请参见使用系统对象Matlab中的系统设计

指定整数因子,L.,通过它来提高输入信号的采样率。多相实施用途L.在较低的采样率下计算卷积的多相子滤波器。FIR插值器延迟并交错这些低速率的卷积以获得更高速率的输出。

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

FIR滤波器系数源,为:

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

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

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

反成像FIR滤波器的分子系数,指定为行向量的幂Z.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,分子如有必要,会在后面加0。

依赖关系

仅当您设置时,此属性才可见NumeratorSource.“属性”

NumeratorSource.被设置为“汽车”时,分子系数采用中规定的设计方法自动重新设计DesignMethod.在自动设计模式下访问滤波器系数,键入objname。分子在MATLAB®命令提示符。

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

FIR滤波器系数的设计方法如下:

  • “皇帝”- Kaiser方法。使用该近似防映像低通滤波器DesignMultirateFir.函数。

  • 'zoh'——零阶保持方法。保存输入序列值。

  • “线性”- 线性插值方法。

依赖关系

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

定点属性

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

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

  • 错误的- 通过单个固定点属性设置来控制定点数据类型。

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

定点操作的舍入方法。有关更多详细信息,请参阅舍入模式

依赖关系

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

  • fulleprecisionoverride.设置真正的

  • fulleprecisionoverride.设置错误的ProductDataType.设置“充分精确”AccumulatorDataType.设置“充分精确”, 和OutputDataType设置'与累加器相同'

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

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

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

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

有关溢出操作的更多详细信息,请参阅溢出模式对于定点操作。

依赖关系

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

  • fulleprecisionoverride.设置真正的

  • fulleprecisionoverride.设置错误的OutputDataType设置'与累加器相同'ProductDataType.设置“充分精确”, 和AccumulatorDataType.设置“充分精确”

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

FIR滤波器系数的数据类型,具体为:

  • 与输入相同的单词长度——系数的字长与输入的字长相同。计算分数长度是为了给出可能的最佳精度。

  • 自定义属性指定的系数数据类型为自定义数值类型CustomCoefficientsDataType财产。

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

依赖关系

属性设置时将应用此属性系数Datatype.财产自定义

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

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

  • '与输入相同'- 对象指定产品输出数据类型与输入数据类型的产品输出数据类型相同。

  • '风俗'属性指定产品输出数据类型为自定义数值类型CustomProductDataType财产。

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

依赖关系

此属性在设置时应用fulleprecisionoverride.错误的

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

依赖关系

此属性仅在您设置时适用fulleprecisionoverride.错误的ProductDataType.'风俗'

该对象中累加操作的数据类型,指定为:

  • “充分精确”——积累操作精度高。

  • “一样的产品”- 该对象指定累加器数据类型与产品输出数据类型的累加器数据类型相同。

  • '与输入相同'- 该对象指定累加器数据类型与输入数据类型的累加器数据类型相同。

  • '风俗'属性指定累加器数据类型为自定义数字类型superfactumulatordataType.财产。

依赖关系

此属性在设置时应用fulleprecisionoverride.错误的

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

依赖关系

此属性仅在您设置时适用fulleprecisionoverride.错误的AccumulatorDataType.'风俗'

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

  • '与累加器相同'——输出数据类型与累加器输出数据类型相同。

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

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

  • '风俗'的输出数据类型指定为自定义数字类型CustomOutputDataType财产。

依赖关系

此属性在设置时应用fulleprecisionoverride.错误的

输出数据类型的单词和分数长度,指定为自动定义的数字类型,单词长度为16,分数长为15。

依赖关系

此属性仅在您设置时适用fulleprecisionoverride.错误的OutputDataType'风俗'

用法

描述

例子

y= firinterp (X的)插入输入信号X沿着第一维,并输出ups采样和过滤的值,y

y= firinterp (X全国矿工工会的)使用FIR滤波器,全国矿工工会,对输入信号进行插值。该配置仅在'numeratorsource'财产设置为'输入端口'

输入参数

全部展开

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

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|FI.
复数支持:金宝app是的

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

依赖关系

此输入仅在'numeratorsource'财产设置为'输入端口'

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|FI.
复数支持:金宝app是的

输出参数

全部展开

FIR插值器输出,作为向量或大小的矩阵返回L P *——- - - - - -问:,在那里L.为插值因子。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|FI.
复数支持:金宝app是的

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,要发布命名的系统对象的系统资源obj.,使用下面的语法:

释放(obj)

全部展开

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

例子

全部收缩

将余弦波插值为原来的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 ... ] Show all properties

使用fvtool.设计的过滤器符合以红色标记的理想过滤器约束。截止频率约为频谱的一半。

fvtool (firinterp)

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

插入2

将余弦信号置于2倍。

y = firinterp (x);

绘制原始信号和内插信号。为了在同一图上绘制两个信号,获得时间仿射变换参数。使用这些参数来计算输出样本时间。这 N. th 输出样本时间等于 规模 × N. + 延迟 .由于插值因子2,每个其他样本的输入和输出值都是一致的。

规模= firinterp.InterpolationFactor;延迟=长度(firinterp.Numerator) / 2;nx =(0:长度(x) 1);以输入单位计算向量y的输出次数泰=((0:长度(y) 1)延迟)/规模;茎(泰,y,'填充',Markersize = 4);抓住;茎(NX,X);抓住离开;XLIM([ -  5,20])ylim([ -  2.5 2.5])传奇(“插入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.numerator.在MATLAB命令提示符中。

设计的滤波器占据较窄的通带,即大约四分之一的频谱。

fvtool (firinterp)

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

将余弦信号插值为4倍。

yAuto = firinterp (x);

绘制原始和重采样信号。由于插值因子改变,重新计算时间仿射变换参数。由于插值因子为4,每4个输出样本的输入和输出值都是一致的。

规模= firinterp.InterpolationFactor;延迟=长度(firinterp.Numerator) / 2;nx =(0:长度(x) 1);%计算输入单元中的矢量Yauto的输出时间tyauto =((0:长度(yauto)-1)-delay)/ scale;茎(泰安托,雅敦,'填充',Markersize = 4);抓住;茎(NX,X);抓住离开;XLIM([ -  5,10])ylim([ -  2.5 2.5])传奇(“插入4”'输入信号');

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

指定信号插值模型

在自动设计模式下,也可以通过DesignMethod财产。

DesignMethod“线性”

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

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

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

ylinear = firinterp (x);

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

规模= firinterp.InterpolationFactor;延迟=(长度(firinterp.Numerator) 1) / 2;nx =(0:长度(x) 1);%计算输入单元中向量ylinear的输出时间tylinear =((0:长度(ylinear) 1)延迟)/规模;茎(tylinear ylinear,'填充',Markersize = 4);抓住;茎(NX,X);抓住离开;XLIM([0,10])ylim([ -  2.5 2.5])图例(“线性插值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

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

yzoh = firinterp (x);

绘制原始和ZOH插值信号。

规模= firinterp.InterpolationFactor;延迟=地板((长度(firinterp.Numerator) 1) / 2);nx =(0:长度(x) 1);以输入单位计算矢量yzoh的输出时间tyzoh =((0:长度(yzoh) 1)延迟)/规模;茎(tyzoh yzoh,'填充',Markersize = 4);抓住;茎(NX,X);抓住离开;Xlim ([0,10]) ylim([-1.5 1.5]) legend('ZOH插值4''输入信号');

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

将音频信号的采样率提高一倍,并使用audiodevicewriter.对象。

笔记:如果您使用的是使用R2016A或早期版本,则用等价替换对象的每个调用一步句法。例如,obj (x)就变成了步骤(obj, x)

注意:audiodevicewriter.中不支持系统对象™金宝appMatlab在线

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

误判率= 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 ... ] Show all properties

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

adw = audiodevicewriter(44100)
ADW = AudioDeviceWriter具有属性:设备:'默认'Samplege:44100显示所有属性

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

尽管~isDone(afr)帧= afr();y = firInterp(框架);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. 的)

E.0.(Z.L.的)E.1(Z.L.的)、……E.l - 1(Z.L.的)FIR滤波器的多相成分是什么H(z)。

概念上,FIR插值滤波器包含UpSampler,然后是FIR低通滤波器H(z)。

FIL Interpolator包含一个upsampler,后跟防映像FIR滤波器。

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

这是插值的多速率高贵身份。

应用高贵恒等式进行插值,将上采样运算移到滤波运算之后。这个动作可以使你以较低的速率过滤信号。

可以用换向器开关替换上采样运算符、延迟块和加法器。开关在第一个支路0上启动,逆时针方向移动,每次从每个支路接收一个样本。插值器有效地输出L.用于它接收的每个输入样本的样本。因此,FIR插值滤波器输出处的采样率是Lfs

扩展功能

定点转换
使用fixed-point Designer™设计和模拟定点系统。

在R2012A介绍