我有一个在MATLAB中实现的算法。我想用我自己的C ++实现替换不同的内置操作。我不想使用MEX作为额外的开销。有什么办法可以使用“系统”命令将变量作为输入参数提供给我的C ++可执行函数。例如,对于用C ++实现的乘法器,以下工作。
result = system('multiplier.exe 10 50')
结果为500。但是以下操作无效:
a = 10;
b = 50;
result = system('multiplier.exe a b');
在这种情况下,结果始终为0。 我试图使用setenv和getenv函数。但是结果仍然是0。 有帮助吗?
答案 0 :(得分:3)
正如user4581301中的a comment所暗示的,您的代码从字面上将a
和b
当作字符串a
和b
,并且无法按照您的期望将它们翻译为10
和50
。您需要将a
和b
的值转换为字符串后,再放置它们。即
result = system(['multiplier.exe ', num2str(a), ' ', num2str(b)]);
答案 1 :(得分:0)
Matlab将它们作为字符串传递。
尝试将您的值写入文件并在所述程序内读取这些文件可能是一种解决方法。但是,如果您的输入/输出很长,并且希望它们具有适当的数据类型,则可能需要过滤来自matlab和cpp的输入和输出流(stdin stdout)以获得适当的行为。