为C ++可执行文件提供变量作为MATLAB系统命令的输入参数

时间:2018-08-16 18:57:17

标签: c++ c matlab system

我有一个在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。 有帮助吗?

2 个答案:

答案 0 :(得分:3)

正如user4581301中的a comment所暗示的,您的代码从字面上将ab当作字符串ab,并且无法按照您的期望将它们翻译为1050。您需要将ab的值转换为字符串后,再放置它们。即

result = system(['multiplier.exe ', num2str(a), ' ', num2str(b)]);

答案 1 :(得分:0)

Matlab将它们作为字符串传递。

尝试将您的值写入文件并在所述程序内读取这些文件可能是一种解决方法。但是,如果您的输入/输出很长,并且希望它们具有适当的数据类型,则可能需要过滤来自matlab和cpp的输入和输出流(stdin stdout)以获得适当的行为。