Вопрос

Я пытаюсь использовать команду FiltFilt с помощью CATLAB Coder , но я бегу в беду.

Если я запускаю программу обычного способа все работает нормально, но когда я пытаюсь построить для 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top