主要内容

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度自由度。当您将此属性设置为时

  • 真的- 该对象使用满足的最小顺序设计过滤器传球架价值。

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

此属性是不可调优的。

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

此属性是不可调优的。

依赖性

只能在以下情况下指定过滤顺序'designforminimunder'被设置为

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

此属性是不可调优的。

依赖性

只能在以下情况下指定通带纹波'designforminimunder'被设置为真的

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

此属性是不可调优的。

定点属性

系数的单词和分数长度,指定为签名或无符号numerictype目的。默认值,Numerictype(1,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)变为步骤(myObject,x)。

估计使用a的线性相位冷冻滤波器的组延迟dsp.transferfuncetionestimator.紧随其后的是对象dsp.phasextractor.dsp。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('采样率'Fs,'Passband职业', 255,......'designforminimunder',错误的,'筛选道', 200);

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

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

要从滤波器的频率响应中提取未包装的阶段,请创建相位提取器。

PE = dsp.PhaseExtractor;

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

df = dsp.differentiator;

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

Gain1 = 512 /π;Gain2 = 1;VBFilter = dsp。VariableBandwidthFIRFilter (“CutoffFrequency”10,......'采样率'Fs);

要查看过滤器的组延迟,请创建数组绘图对象。

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

运行算法

-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 *差异;vbfout = vbfilter(phaseadtergain2);%平滑组延迟AP(VBFOUT);%显示组延迟结束

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

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

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

将FM信号转换为AM信号。

ts = timescope (2......“TimeSpanSource”“属性”......'时间跨度',0.3,......“BufferLength”10 * Fs,......'采样率'Fs,......“ShowGrid”,真的,......“YLimits”,[ -  1.5 1.5],......“LayoutDimensions”,[2 1]);df = dsp.differentiator;Tic.尽管toc <2.2 x =步骤(sinewave);fm_y =调制(x,fc,fs,'调频');fm_y am_y =步骤(df);步骤(ts、fm_y am_y);结束释放(DF);释放(TS);

算法

全部展开

参考文献

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

扩展能力

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

介绍了R2016a