【发布时间】:2015-06-15 15:43:19
【问题描述】:
这个问题指的是 Matlab coder 外在功能。像fprintf 这样的一些函数在较旧的 Matlab 版本中是外在的,而在较新的版本中不是外在的。有没有办法支持多个Matlab版本,如果coder.extrinsics只允许在顶层,并且不能放在if语句下?
【问题讨论】:
标签: matlab matlab-coder
这个问题指的是 Matlab coder 外在功能。像fprintf 这样的一些函数在较旧的 Matlab 版本中是外在的,而在较新的版本中不是外在的。有没有办法支持多个Matlab版本,如果coder.extrinsics只允许在顶层,并且不能放在if语句下?
【问题讨论】:
标签: matlab matlab-coder
您不能有条件地直接将某些函数设为外部函数。一种方法是使用两个不同的函数,例如 fprintf_old 和 fprintf_new。 fprintf_old 将具有 coder.extrinsic 声明,然后调用 fprintf。 fprintf_new 可以在没有外部声明的情况下调用 fprintf。现在,您可以通过在编译期间使用恒定条件检查您的版本来在两个调用之间进行选择。例如,
if coder.const(isOlderVersion())
fprintf_old();
else
fprintf_new();
end
【讨论】:
在代码生成中,feval constructs an extrinsic call 指向第一个参数中命名的函数。由于您可以在控制流中嵌入对feval 的调用,因此可以使用它来选择性地从外部调用函数并将代码保存在单个源文件中:
if isOlderVersion()
% Call fprintf extrinsically
feval('fprintf');
else
fprintf();
end
【讨论】: