我使用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
有效。
我发现some links解释了如何生成resample
的代码。但这似乎不适用于我的情况。
我使用Matlab 2017b。
谢谢。
答案 0 :(得分:1)
C / C ++代码生成:使用MATLAB®Coder™生成C和C ++代码。
使用注意事项和限制:
C和C ++代码生成用于重采样需要DSP System Toolbox™软件。 上采样和下采样因子必须指定为常数。如果表达式或变量的值不变,则允许它们。
不支持可变大小的输入。
在您的代码上,您有in
,不受大小限制。
在函数myresample
中,应尝试指定一个限制。像这样:
limited_in = in(1:128);
out = resample(limited_in,4644,1000,10);
因此resample
的输入大小将始终是恒定的。