MATLAB CODER и FILTFILT ()
-
12-11-2019 - |
Вопрос
Если я запускаю программу обычного способа все работает нормально, но когда я пытаюсь построить для C-кода, отображается следующее сообщение об ошибке: «Данные должны иметь длину более чем в 3 раза . Это, однако, кажется неверным, поскольку MatLab перечислены в списках FiltFilt в качестве поддерживаемой функции генерации кода - http://www.mathworks.se/help/toolbox/signal/ug/br7exek-1.html
Мой звонок:
y_filt= filtfilt (b, a, y);
Мои переменные непосредственно перед вызовом имеют следующие свойства:
Размер имени .......... Байты ...... Класс
...... 1x9 ........... 72 ........... Двойной
B ...... 1x9 ........... 72 ........... Double
Y ...... 1499400x1 11995200 Двойной
Решение
Я понимаю ваше разочарование.Я думаю, что проблема связана с тем, что для того, чтобы использовать filtfilt
, вы предварительно выделите массивное количество данных.Когда я пробую аналогичную операцию, мою машину, которая считается классом сервера, выходит из памяти.Я бы порекомендовал посмотреть на ваши требования и убедиться, что filtfilt
является единственной функцией, которая встретит их.Я понимаю, что свойство нулевого фазы генеракодицетагкода идеально подходит для распределения в Cader MatLab, однако требования к памяти могут дать вам больше головных болей.Дайте мне знать, если вы хотите обсудить другие альтернативы.Спасибо!
Другие советы
Вы используете бушуйте-фильтр здесь.Это фильтр IIR.Фильтр Order , который задают, может быть намного выше, чем количество вкладок фильтра.И длина сигнала должна быть в три раза три раза
С уважением, Tchekov