Повторная выборка кода Matlab: количество слагаемых N должно быть постоянным - PullRequest
0 голосов
/ 23 октября 2018

Я использую Matlab-кодер для генерации кода C следующей функции:

function [out] = myresample(in)
    out = resample(in,4644,1000,10);
end

и генерирую код с помощью codegen myresample -args {coder.typeof(0, [1 Inf]), 0} -config cfg, где cfg = coder.config('lib'), cfg.DynamicMemoryAllocation = 'AllVariableSizeArrays'.

Ноон сообщает об ошибке как:

??? The number of terms N must be constant.

Я запутался, почему это неправильно.Интересно, что когда я изменяю функцию на

function [out] = myresample(in)
    out = resample(in,10,10,10);
end

, она работает.

Я нашел некоторые ссылки , объясняющие, как генерировать код resample.Но, похоже, это не работает для моего случая.

Я использую Matlab 2017b.

Спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

Согласно документации Matlab 2017b :

Генерация кода C / C ++: создание кода C и C ++ с использованием MATLAB® Coder ™.
Замечания по использованию и ограничения: *Для генерации кода 1007 * C и C ++ для повторной выборки требуется программное обеспечение DSP System Toolbox ™.Факторы повышающей и понижающей дискретизации должны быть указаны как константы.Выражения или переменные допускаются, если их значения не меняются.
Входные данные переменного размера не поддерживаются.

Здесь, в вашем коде, у вас есть in, то есть

в вашей функции myresample вы должны попытаться указать ограничение.Что-то вроде:

limited_in = in(1:128);
out = resample(limited_in,4644,1000,10);

Так что размер входов resample всегда будет постоянным.

...