我使用matlab mcc创建一个独立的应用程序exe文件,然后我使用php来调用exe文件。但是我无法获得函数返回值,它总是空的!这是我在m文件中的测试示例
function result=mysum(in)
if nargin<1
in=[1,2,3];
else
in=str2num(in);
end
result=sum(in);
end
然后我使用命令mcc -m mysum.m
创建exe文件(我已经配置了matlab编译器)。
这是php文件
<html>
<head>
<title>test</title>
</head>
<body>
<?php
exec('F:\myevm\apache\htdocs\shs.exe [2,2,3,3,3] [4,4,4,4,4] 356 1567 1678',$ars);
echo '<br>';
echo $ars[0];
?>
</body>
</script>
</html>
然而,$ars[0]
总是空的!!
我试图通过自己或通过互联网找到答案,但失败了。给我一个帮助,谢谢。
答案 0 :(得分:0)
注意两件事:
因此,如果您键入mysum 1
(在未编译程序的MATLAB中,我猜也是如果您从编译程序的Windows命令行执行此操作,尽管我还没有对此进行测试)它会起作用,给出答案1
,如果你输入mysum [1,2]
它会起作用,给出答案3
。请注意,mysum [1,2]
与mysum([1,2])
不同,因为它传递的是字符串 '[1,2]'
,而不是双倍数组{{} 1}}。
但是如果你输入[1,2]
它会失败,因为你现在传递了两个字符串输入参数,你的函数被设置为只接受一个。
重写你的函数,使它接受可变数量的输入参数(看看mysum 1 2
来实现这一点),依次将varargin
应用于每个输入(将str2num
1}} varargin{1}
如果您已使用varargin{n}
),然后将它们单独汇总。