主要内容

dsp。FilterCascade

创建级联过滤系统对象

描述

dsp。FilterCascade对象创建多级System对象™,该对象支持过滤系统对象、延迟和标量增益的级联。对象的操作类似于级联函数。然而,级联函数不支持将延迟作为过滤级。万博1manbetx

你可以通过dsp。FilterCascade系统对象作为另一个阶段dsp。FilterCascade系统对象。你也可以通过dsp。FilterCascade对象的输入级联函数。

当您呼叫对象时,滤波器级联中的所有阶段都必须支持输入信号的大小,数据类型和复杂性。万博1manbetx如果对象中的滤波器级支持万博1manbetx可变大小的信号,则该对象支持可变大小的信号。

用级联滤波器对信号进行过滤:

  1. 创造dsp。FilterCascade对象,并设置其属性。

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

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

或者,您可以生成一个MATLAB®函数,并调用该函数来过滤信号。生成的函数支持C/ c++代码生成。万博1manbetx有关详细信息,请参见generateFilteringCode函数。

创建

描述

足球俱乐部= dsp.filtercascade.返回一个System对象,足球俱乐部它只有一个阶段adsp。FIRFilter具有默认属性的系统对象。

例子

足球俱乐部= dsp.FilterCascade (filtn filt1, filt2,…)返回多级系统对象,足球俱乐部,第一阶段已经开始filt1,第二阶段开始了filt2, 等等。每个阶段都可以是过滤系统对象,adsp。FilterCascade系统对象,adsp.delay.系统对象,或标量增益值。

例如,创建一个过滤器级联,其包括低通滤波器,高通滤波器和增益级。

lpfilt = dsp.lowpassfilter(“StopbandFrequency”, 15000,...“PassbandFrequency”,12000);hpfilt = dsp.highpassfilter(“StopbandFrequency”,5000,...“PassbandFrequency”, 8000);获得= 2;bpFilt = dsp.FilterCascade (lpFilt hpFilt 2);

属性

展开全部

除非另有说明,否则属性是不宜,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定,以及释放函数打开它们。

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

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

过滤级,指定为过滤系统对象、延迟系统对象或标量增益值。要查看哪些System对象可以添加到过滤级联中,请使用:

dsp.filtercascade.help万博1manbetxsupportedsystemobjects.
您可以通过修改关联属性来修改现有阶段。例如:
FC = dsp. filtercascade (dsp. firfilter,5)带有属性的FilterCascade:第2阶段:5 K>> FC。Stage2 = dsp。FIRDecimator FC = dsp。FilterCascadewith properties: Stage1: [1×1 dsp.FIRFilter] Stage2: [1×1 dsp.FIRDecimator]
若要更改级联中的阶段数,请使用addstage.removeStage职能。

使用

语法

描述

例子

y= fc(x过滤输入信号x中定义的过滤级联足球俱乐部并返回滤波输出y.输入信号的大小、数据类型和复杂性必须由滤波器级联中的所有阶段支持。万博1manbetx如果对象中的滤波器级支持万博1manbetx可变大小的信号,则该对象支持可变大小的信号。

输入参数

展开全部

数据输入,指定为向量或矩阵。当输入是矩阵时,矩阵的每列代表独立的数据信道。

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

输出参数

展开全部

过滤输出数据,以向量或矩阵的形式返回。输出信号的大小、数据类型和复杂性与输入信号相匹配。

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

对象的功能

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

发行版(obj)

展开全部

addstage. 添加过滤级到级联
generateFilteringCode 生成马铃薯草过滤器级联的代码
getNumStages 得到过滤器级联的级数
releaseStages 释放级联中所有阶段的锁定状态
removeStage 从过滤级联中移除级
运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重启 重置内部状态系统对象

例子

全部折叠

请注意:此示例仅在R2016B或更高版本中运行。如果您使用的是早期版本,请将每个呼叫替换为相同的函数语法。例如,myObject (x)就变成了步骤(myobject,x)

通过级联设计一个带通滤波器:

  • 阻带频率为5000hz,通带频率为8000hz的高通滤波器

  • 低通滤波器,通带频率为12,000 Hz和15,000赫兹的停止频率

使用fvtool

lpfilt = dsp.lowpassfilter(“StopbandFrequency”, 15000,...“PassbandFrequency”,12000);hpfilt = dsp.highpassfilter(“StopbandFrequency”,5000,...“PassbandFrequency”, 8000);bpFilt = dsp.FilterCascade (lpFilt hpFilt);fvtool (bpFilt);传奇(带通滤波器的);

将嘈杂的正弦波传递为带通滤波器的输入。输入是三个正弦波的总和,频率为3 kHz,10 kHz和15 kHz。采样频率为48 kHz。在频谱分析仪上查看输入和滤波输出。

3千赫和15千赫的音调被衰减,10千赫的音调被带通滤波器保留。

Sine1 = dsp。SineWave (“频率”3 e3,...“SampleRate”48岁的e3,...“SamplesPerFrame”, 6000);Sine2 = dsp。SineWave (“频率”,10e3,...“SampleRate”48岁的e3,...“SamplesPerFrame”, 6000);Sine3 = dsp。SineWave (“频率”15 e3,...“SampleRate”48岁的e3,...“SamplesPerFrame”, 6000);SpecAna = dsp。简介(...'plotastwosidedspectrum'假的,...“SampleRate”,sine1.samplerate,...“NumInputPorts”2,...“ShowLegend”,真的,...“YLimits”, -160, 60);SpecAna。ChannelNames = {“原始噪声信号”“过滤信号”};i = 1:1000 x = sine1()+ sine2()+ sine3()+ 0.1。* randn(sine1.samplesperframe,1);y = bpfilt(x);Specana(X,Y);结束发行版(SpecAna)

创建一个CIC DECIMATOR。将吸引器级联增益。

cicdecim = dsp。CICDecimator (...“DecimationFactor”,6,...“NumSections”6);decimcasc = dsp。FilterCascade(cicdecim,...1 /增益(cicdecim));

设计一个补偿小数部分,并用滤波器串级,decimcasc.这个操作嵌入了dsp。FilterCascade对象作为另一个过滤器级联的阶段。CIC补偿Detimator具有固有的增益,获得(cicdecim).的因素1 /增益(cicdecim)从抽取过滤器级联,decimcasc,对补偿滤波器增益进行补偿。

%补偿小数输入采样率FS = 16E3;%通带频率成就= 4 e3;%阻带频率fStop = 4.5 e3;ciccomp = dsp。CICCompensationDecimator (cicdecim...“DecimationFactor”2,...“PassbandFrequency”成就,...“StopbandFrequency”fStop,...“SampleRate”,FS);filtchain = dsp.filtercascade(Decimasc,ciccomp);

可视化级联级联的频率响应。

f = fvtool (decimcasc ciccomp,...filtchain,'fs'fs, [fs * 6日,fs * 6],...“算术”“固定”);传奇(F,“中投杀害多人者”...“中投公司补偿杀害多人者”...“总体响应”);

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含6个类型为line的对象。这些对象代表CIC Decimator: Quantized, CIC Decimator: Reference, CIC Compensation Decimator: Quantized, CIC Compensation Decimator: Reference, Overall Response: Quantized, Overall Response: Reference。

设计具有100 Hz过渡宽度,2-KHz采样频率的两级抽取器,STOPBAND中的60-DB衰减。抽取器需要将下降到4倍。

decimSpec = fdesign.decimator (4“奈奎斯特”...4,“Tw, Ast”...100,60,2000);filtcasc = design(Decimspec,“多级”...“SystemObject”,真正的);

通过使用fvtool

信息(filtCasc)
ans = '离散滤波器级联  ---------------------------- 数量的阶段:2 Stage1: dsp。FIRDecimator ------- Discrete-Time FIR Multirate Filter (real) ----------------------------------------- Filter Structure: Direct-Form FIR Polyphase Decimator Decimation Factor: 2 Polyphase Length: 10 Filter Length: 19 Stable: Yes Linear Phase: Yes (Type 1) Arithmetic: double stage e2: dsp。FIRDecimator ------- Discrete-Time FIR Multirate Filter (real) ----------------------------------------- Filter Structure: Direct-Form FIR Polyphase Decimator decimfactor: 2 Polyphase Length: 18 Filter Length: 35 Stable: Yes Linear Phase: Yes (Type 1) Arithmetic: double '
FVTool(Filtcasc)

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

使用此设计生成过滤数据的代码。控件不能生成C/ c++代码dsp。FilterCascade对象,但您可以从生成的函数生成C/ c++代码。该函数定义筛选阶段并依次调用它们。这个函数保存在一个名为my的文件中Decimator.m在当前目录中。

generateFilteringCode (filtCasc“myDecimator”);

我的杀害多人者函数创建过滤器级联并依次调用每个阶段对象。

类型myDecimator
function y = myDecimator(x) % myDecimator构造滤波器级联并处理每个阶段% MATLAB代码% MATLAB(R) 9.11和DSP System Toolbox 9.13生成。要从这个函数生成C/ c++代码,使用codegen命令。%输入'help codegen'获取更多信息。%#codegen %% construct persistent filter1 filter2 if isempty(filter1) filter1 = dsp. php . php . php . php . php。FIRDecimator(…'分子',[0.0021878514650437845 0 -0.010189095418136306 0 0.031140395225498115 0 -0.082785931644222821 0 0.30979571849010851 0.5 0.30979571849010851 0 -0.082785931644222821 0 0.031140395225498115 0 -0.010189095418136306 0 0.00218789541813645];filter2 = dsp。FIRDecimator(…“分子”,[0.0011555011750488237 0.018592020073668478 -0.010736374060960912 -0.0027482166351233102 0.0057681982289523072 0 0 0 0 0 0 0 0.052603914610235683 -0.099130756073130377 -0.031093723586671229 -0.031093723586671229 0.052603914610235683 -0.099130756073130377 0.31592697826202448 0.5 0.31592697826202448 0 0 0 0 0.018592020073668478 0-0.010736374060960912 0 0.0057681982289523072 0 -0.0027482166351233102 0 0.0011555011750488237]; end %% Process y1 = filter1( x ); y = filter2( y1);

扩展功能

另请参阅

对象

功能

介绍了R2014b