0

我正在尝试在脚本中混合文件。必须混合的 C 文件是在混合之前在脚本的先前步骤之一中生成的。

当我在脚本中使用以下行时,一切正常并且脚本运行成功。

mex (strcat(component_name,'_s_func','.c'));

但是当我在下面添加同一行时

mex -g (strcat(component_name,'_s_func','.c'));

它给了我错误

C:\PROGRA~2\MATLAB~1\BIN\MEX.PL: 错误: '(strcat(component_name,_s_func,.c))' 未找到。

知道为什么它在使用-g时无法找到相同的文件,而在没有-g选项的情况下可以找到它吗?

4

2 回答 2

3

您的陈述的问题在于语法

mex -g [...]

MATLAB 假定您mex使用字符串参数进行调用'-g''[...]'因此它假定您的文件已被调用(strcat(component_name,'_s_func','.c'))并且不执行命令。

您可以使用您发布的解决方案eval,因为您可以再次使用字符串'-g''filename.c'. 另一种可能性是使用语法

mex('-g',strcat(component_name,'_s_func','.c'));

因为这样命令strcat是在调用之前真正执行的mex

--

这与例如 with 的行为相同clear。您可能知道,以下语句是相等的:

clear a b c
clear('a','b','c');
于 2015-04-14T09:57:12.100 回答
-2

好的,可以使用 eval 命令执行此操作

file_name=(strcat(component_name,'_s_func','.c'));
eval(['mex -g ',file_name]);
于 2015-04-14T08:19:49.797 回答