主要内容

dsp。Differentiator

直接形成FIR全频带微分滤波器

描述

dsp。DifferentiatorSystem object™对输入信号应用全频带微分滤波器,以区分其所有频率成分。本设计采用FIR等纹波滤波器设计微分器滤波器。微分器的理想频率响应为 D ω j ω π ω π .您可以按照指定的顺序设计最小顺序的过滤器。该对象支持定点操作。金宝app

过滤你输入的每个通道:

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

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

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

创建

描述

例子

DF= dsp。Differentiator返回一个区别,DF,它根据给定的设计规格,随时间独立地过滤输入的每个通道。

DF= dsp。Differentiator(名称,值将每个属性名设置为指定的值。未指定的属性具有默认值。

属性

全部展开

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

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

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

选择设计一个最小阶滤波器,指定为逻辑标量。过滤器有2个自由度。当您将此属性设置为

  • 真正的-对象以满足的最小顺序设计滤波器PassbandRipple价值。

  • -对象设计过滤器的顺序,您指定在FilterOrder财产。

此属性是不可调优的。

滤波器的阶数,指定为奇数正整数。

此属性是不可调优的。

依赖关系

只能在以下情况下指定过滤顺序“DesignForMinimumOrder”被设置为

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

dB的最大通带纹波,指定为正实标量。

此属性是不可调优的。

依赖关系

只能在以下情况下指定通带纹波“DesignForMinimumOrder”被设置为真正的

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

选项缩放过滤器系数,指定为逻辑标量。当您将此属性设置为真正的,对象缩放滤波系数以保持输入的动态范围。

此属性是不可调优的。

定点属性

系数的字和分数长度,指定为有符号或无符号numerictype对象。默认的,numerictype (16),对应具有16位系数的有符号数字类型对象。为了给出最好的可能的精度,分数长度是根据系数值计算的。

此属性是不可调优的。

输出的字长与输入的字长相同。对象计算输出的部分长度,这样输出的整个动态范围就可以表示而不会溢出。有关对象如何计算输出的分数长度的详细信息,请参见FIR滤波器中避免溢出的定点精度规则

输出定点运算的舍入方法,指定为字符向量。有关舍入模式的更多信息,请参见精度和范围

此属性是不可调优的。

使用

语法

描述

例子

y= DF (x对输入信号应用全频带微分滤波器,xy是有区别的版本吗x

输入参数

全部展开

数据输入,指定为向量或矩阵。如果输入信号是一个矩阵,则矩阵的每一列都被视为一个独立的信道。输入信号中的行数表示通道长度。输入数据和输出数据的数据类型特征(双值、单值或定点)和实-复值特征(实值或复值)必须相同。

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

输出参数

全部展开

微分信号,以与输入信号大小、数据类型和复杂度相同的矢量或矩阵返回,x

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

对象的功能

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

发行版(obj)

全部展开

getFilter 得到底层FIR滤波器
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部折叠

请注意:此示例仅在R2016b或更高版本中运行。如果您正在使用较早的版本,请将对该函数的每个调用替换为等价的一步语法。例如,myObject(x)变成step(myObject,x)。

估计线性相位FIR滤波器的群延迟使用dsp。TransferFunctionEstimator紧随其后的是对象dsp。PhaseExtractordsp。Differentiator对象。给出了线性相位FIR滤波器的群延迟$GD = -(d\theta(ω)/d\ ω) = - frac{N}{2}$,在那里\θ(\ω)美元为滤波器的相位信息,ω\美元是频率矢量吗N是过滤器的顺序。

设置对象

创建一个线性相位FIR低通滤波器。设置阶数为200,通频带频率为255 Hz,通频带纹波为0.1 dB,阻带衰减为80 dB。请指定采样频率为512 Hz。

Fs = 512;LPF = dsp。LowpassFilter (“SampleRate”Fs,“PassbandFrequency”, 255,...“DesignForMinimumOrder”假的,“FilterOrder”, 200);

为了估计低通滤波器的传递函数,创建一个传递函数估计器。指定要设置的窗口损害.设置FFT长度为1024,平均光谱数为200。

TFE = dsp。TransferFunctionEstimator (“FrequencyRange”双侧的...“SpectralAverages”, 200,“FFTLengthSource”“属性”...“FFTLength”, 1024);

要从滤波器的频率响应中提取未包裹的相位,创建一个相位提取器。

PE = dsp.PhaseExtractor;

为了区分相位\θ美元,创建微分器过滤器。该值用于计算组延迟。

DF = dsp.Differentiator;

为了平滑输入,创建一个可变带宽的FIR滤波器。

Gain1 = 512 /π;Gain2 = 1;VBFilter = dsp。VariableBandwidthFIRFilter (“CutoffFrequency”10...“SampleRate”Fs);

若要查看过滤器的组延迟,请创建array plot对象。

美联社= dsp。ArrayPlot (“PlotType”“行”“YLimits”(-500 400),...“YLabel”“振幅”“包含”样品的数量);

运行算法

-loop是估计过滤器组延迟的流循环。在环路中,算法对输入信号进行滤波,估计滤波器的传递函数,并对滤波器的相位进行微分,计算出组延迟。

硝石= 1000;%迭代次数k = 1:Niter x = randn(512,1);%输入信号=高斯白噪声y = LPF (x);用低通FIR滤波器滤除噪声H = TFE (x, y);计算传递函数估计值阶段= PE (H);%提取解压阶段phaseaftergain1 = Gain1 *阶段;DiffOut = DF (phaseaftergain1);%区分相位phaseaftergain2 = Gain2 * DiffOut;VBFOut = VBFilter (phaseaftergain2);%平滑组延迟美联社(VBFOut);%显示组延迟结束

如你所见,低通滤波器的组延迟是100。

在1.5 kHz采样的100hz载波信号上创建调频波。

Fc = 1 e2;%载体Fs = 1.5 e3;%采样率sinewave = dsp。SineWave (“频率”10...“SamplesPerFrame”1 e3,...“SampleRate”Fs);

将调频信号转换为调幅信号。

ts = timescope (“TimeSpanSource”“属性”...“时间间隔”, 0.3,...“BufferLength”10 * Fs,...“SampleRate”Fs,...“ShowGrid”,真的,...“YLimits”(-1.5 - 1.5),...“LayoutDimensions”1 [2]);df = dsp.Differentiator;抽搐Toc <2.2 x = step(正弦波);fm_y =调节(x, Fc, Fs,“调频”);fm_y am_y =步骤(df);步骤(ts、fm_y am_y);结束释放(df);释放(ts);

算法

全部展开

参考文献

索福克勒斯·奥法尼迪斯信号处理概论.上鞍河,新泽西州:Prentice-Hall, 1996。

扩展功能

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

介绍了R2016a