generateFilteringCode

Сгенерируйте код MATLAB для каскада фильтра

Описание

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

пример

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

Примеры

свернуть все

Спроектируйте 2D этап decimator с шириной перехода на 100 Гц, частотой дискретизации на 2 кГц и затуханием на 60 дБ в полосе задерживания. decimator должен проредить на коэффициент 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 object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

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

 generateFilteringCode(filtCasc,'myDecimator');

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

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

% MATLAB Code
% Generated by MATLAB(R) 9.11 and DSP System Toolbox 9.13.
% Generated on: 25-Aug-2021 09:39:27

% 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
Для просмотра документации необходимо авторизоваться на сайте