generateFilteringCode
Generate MATLAB code for a filter cascade
Description
generateFilteringCode(
creates a MATLAB® function that contains code to create the stages of a filter cascade,
FC
)FC
, and calls each stage in sequence. If the filters in each stage
support code generation, you can generate C/C++ code from the function returned by
generateFilteringCode
.
Examples
Design a two-stage decimator with a 100-Hz transition width, a 2-kHz sampling frequency, and 60-dB attenuation in the stopband. The decimator needs to downsample by a factor of 4.
filtCasc = designRateConverter(DecimationFactor=4,... InputSampleRate=2000,Bandwidth=200,StopbandAttenuation=60,... Verbose=true)
designRateConverter(InterpolationFactor=1, DecimationFactor=4, InputSampleRate=2000, Bandwidth=200, StopbandAttenuation=60, MaxStages=Inf, CostMethod="estimate", OptimizeFor="MPIS", Tolerance=0, ToleranceUnits="absolute") Conversion ratio: 1:4 Input sample rate: 2000 Output sample rate: 500
filtCasc = dsp.FilterCascade with properties: Stage1: [1×1 dsp.FIRDecimator] Stage2: [1×1 dsp.FIRDecimator] CloneStages: true
Verify your design.
info(filtCasc)
ans = 'Discrete-Time Filter Cascade ---------------------------- Number of stages: 2 Stage cloning: enabled 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 '
freqz(filtCasc)
Generate code to filter data using this design. You cannot generate C/C++ code from the dsp.FilterCascade
object directly, but you can generate C/C++ code from the generated function. The function defines the filter stages and calls them in sequence. The function is saved in a file called myDecimator.m
in the current directory.
generateFilteringCode(filtCasc,"myDecimator");
The myDecimator
function creates a filter cascade and calls each stage object in turn.
type myDecimator
function y = myDecimator(x) %MYDECIMATOR Construct a filter cascade and process its stages % MATLAB Code % Generated by MATLAB(R) 25.2 and DSP System Toolbox 25.2. % Generated on: 10-Aug-2025 08:54:40 % To generate C/C++ code from this function use the codegen command. % Type 'help codegen' for more information. %#codegen %% Construction persistent firdn1 firdn2 if isempty(firdn1) firdn1 = 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]); firdn2 = 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 = firdn1(x); y = firdn2(y1);
Input Arguments
Filter cascade, specified as a dsp.FilterCascade
System object.
File name where the generated function is saved, specified as a character vector or string scalar.
Data Types: char
| string
Version History
Introduced in R2014b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)