exponenta event banner

generateFilteringCode

Создание кода MATLAB для каскада фильтров

Описание

generateFilteringCode(FC) создает функцию MATLAB ®, содержащую код для создания этапов каскада фильтров ,FCи вызывает каждый этап последовательно. Если фильтры в каждом этапе поддерживают генерацию кода, можно создать код C/C + + из функции, возвращаемой generateFilteringCode.

пример

generateFilteringCode(FC,fileName) генерирует код и сохраняет результирующую функцию в файл, указанный в fileName.

Примеры

свернуть все

Спроектируйте двухступенчатый прореживатель с 100-Hz шириной перехода, 2-kHz частотой дискретизации и 60-dB затуханием в полосе останова. Прореживатель должен быть понижен в 4 раза.

decimSpec = fdesign.decimator(4,'Nyquist',4,'Tw,Ast',100,60,2000);
filtCasc = design(decimSpec,'multistage','SystemObject',true);

Проверка проекта с помощью fvtool.

 info(filtCasc)
ans = 
    'Discrete-Time Filter Cascade
     ----------------------------
     Number of stages: 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                             
     
     
     Stage2: dsp.FIRDecimator
     -------
     Discrete-Time FIR Multirate Filter (real)               
     -----------------------------------------               
     Filter Structure   : Direct-Form FIR Polyphase Decimator
     Decimation Factor  : 2                                  
     Polyphase Length   : 18                                 
     Filter Length      : 35                                 
     Stable             : Yes                                
     Linear Phase       : Yes (Type 1)                       
                                                             
     Arithmetic         : double                             
     
     '

 fvtool(filtCasc)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

Создать код для фильтрации данных с помощью этой конструкции. Невозможно создать код C/C + + из dsp.FilterCascade непосредственно, но можно создать код C/C + + из созданной функции. Функция определяет этапы фильтра и вызывает их последовательно. Функция сохраняется в файле с именем myDecimator.m в текущем каталоге.

 generateFilteringCode(filtCasc,'myDecimator');

МойDecimator функция создает каскад фильтров и по очереди вызывает каждый объект рабочей области.

 type myDecimator
function y = myDecimator(x)
%MYDECIMATOR Construct filter cascade and process each stage

% MATLAB Code
% Generated by MATLAB(R) 9.10 and DSP System Toolbox 9.12.
% Generated on: 21-Apr-2021 05:18:31

% To generate C/C++ code from this function use the codegen command.
% Type 'help codegen' for more information.
%#codegen

%% Construction
persistent filter1 filter2
if isempty(filter1)
    filter1 = dsp.FIRDecimator(  ...
        'Numerator', [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.0021878514650437845]);
    filter2 = dsp.FIRDecimator(  ...
        'Numerator', [0.0011555011750488237 0 -0.0027482166351233102 0 0.0057681982289523072 0 -0.010736374060960912 0 0.018592020073668478 0 -0.031093723586671229 0 0.052603914610235683 0 -0.099130756073130377 0 0.31592697826202448 0.5 0.31592697826202448 0 -0.099130756073130377 0 0.052603914610235683 0 -0.031093723586671229 0 0.018592020073668478 0 -0.010736374060960912 0 0.0057681982289523072 0 -0.0027482166351233102 0 0.0011555011750488237]);
end

%% Process
y1 = filter1( x );
y  = filter2( y1);

Входные аргументы

свернуть все

Каскад фильтров, указанный как dsp.FilterCascade Системный объект.

Имя файла, в котором сохранена созданная функция, указанное как вектор символа или скаляр строки.

Типы данных: char | string

См. также

Объекты

Функции

Представлен в R2014b