Я пытаюсь скомпилировать с помощью Matlab Coder пользовательскую функцию, которая включает фильтр Баттерворта. Я извлек строки, которые вызывают у меня проблемы с функцией кодера Matlab.
function [output] = myfilter(input,fs) %#codegen
f1 = 5; % cuttoff low frequency to get rid of baseline wander
Wn = f1.*2./fs; % cutt off based on fs
N = 3; % order of 3 less processing
[a,b] = butter(N,Wn); % bandpass filtering
output = filtfilt(a,b,input); % filtering
output = output/max(abs(output));
Я получаю сообщение об ошибке, когда запускаю команду для его компиляции:
codegen -config:lib -launchreport myfilter -args {zeros(1,100),10}
Ошибка вывода: Все входные данные должны быть постоянными. Я попытался использовать функцию coder.const, изменив код следующим образом, но все еще имею ту же проблему:
function [output] = myfilter(input,fs) %#codegen
f1 = 5; % cuttoff low frequency to get rid of baseline wander
Wn = f1.*2./fs; % cutt off based on fs
N = 3; % order of 3 less processing
[a,b] = coder.const(@butter,N,Wn); % bandpass filtering
a = coder.const(a);
b = coder.const(b);
output = filtfilt(a,b,input); % filtering
output = output/max(abs(output));
Может ли кто-нибудь помочь мне с этой проблемой? Я новичок в Matlab Coder. Заранее спасибо!