How to write C code generation for ' not available function for standalone generation' ?

조회 수: 14 (최근 30일)
Hi, i can not transfert my matlab algorithme. When I use Matlab Coder to convert it into C code, it build failed with the following error:
The function 'designfilt' is not supported for standalone code generation. See the documentation for coder.extrinsic to learn how you can use this function in simulation.
Then i think i need to write a bandpass filter in C code by myself using DFT and inverse fourier transformation, but i really don't know how to write it. May somebody help me ?
  댓글 수: 2
Jan
Jan 2017년 4월 27일
Please do not use # characters in the tags. This is not twitter.
What kind of bandpass filter do you need? As long, as you do not explain this, it is hard to suggest a solution. A full replacement of the designfilt command would be an overkill.
Julien Pelet
Julien Pelet 2017년 4월 28일
Hi Jan, sorry i am new here. I use two different kind of filter, one 'designfilter' and the other 'Least Square' is reported just over there ))
function [td_filtrage]= LeastSquare(Datad,Fs)
N = 40; % Order
Fstop1 = 0.7; % First Stopband Frequency
Fpass1 = 0.9; % First Passband Frequency
Fpass2 = 1.4; % Second Passband Frequency
Fstop2 = 1.5; % Second Stopband Frequency
Wstop1 = 1; % First Stopband Weight
Wpass = 1; % Passband Weight
Wstop2 = 1; % Second Stopband Weight
% Calculate the coefficients using the FIRLS function.
b = firls(N, [0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2), [0 0 1 1 0 ...
0], [Wstop1 Wpass Wstop2]);
Hd = dfilt.dffir(b);
td_filtrage = filter(Hd,Datad)
Then when i try to translate in C code, the software send me: Error 'dfilt.dffir' is not supported for code generation.
Thank you to help me !

댓글을 달려면 로그인하십시오.

채택된 답변

Honglei Chen
Honglei Chen 2017년 4월 27일
Do you need to change your filter over the simulation, if not, then the coder.extrinsic approach, as outlined in the error message, would be a good way to go. Essentially you can use MATLAB to compute the coefficients and then perform the filtering.
HTH
  댓글 수: 8
Julien Pelet
Julien Pelet 2017년 5월 2일
I fix the problem about the constant Fs, I put this variable insade the LeastSquare function.
function [td_filtrage]= LeastSquare(Datad)
Fs = 37;
N = 40; % Order
Fstop1 = 0.7; % First Stopband Frequency
Fpass1 = 0.9; % First Passband Frequency
Fpass2 = 1.4; % Second Passband Frequency
Fstop2 = 1.5; % Second Stopband Frequency
Wstop1 = 1; % First Stopband Weight
Wpass = 1; % Passband Weight
Wstop2 = 1; % Second Stopband Weight
% Calculate the coefficients using the FIRLS function.
b = firls(N, [0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2), [0 0 1 1 0 ...
0], [Wstop1 Wpass Wstop2]);
td_filtrage = filter(b,1,Datad);
Then i change the call code in the Main
td_filtrage = LeastSquare(Datad);
I received my function in C code, i think its working. I need to put the code in my microprocesor . Thank you for everything !!
Hari Ijjada
Hari Ijjada 2019년 8월 30일
i am facing the same issue but instead of bandpass filter i am using low pass filter. how to design the lowpass filter using firls syntax ?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Filter Design에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by