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 + + из сгенерированной функции. Функция определяет этапы фильтрации и вызывает их последовательно. Функция сохранена в файле под названием my Decimator.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
Для просмотра документации необходимо авторизоваться на сайте