0

我使用 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]总是空的!我试图自己或通过互联网寻找答案,但失败了。帮帮我,谢谢。

4

1 回答 1

0

注意两点:

  1. 您已将函数设置为接受单个输入参数。
  2. 当您从 Windows 命令行运行应用程序时,参数作为字符串传入。

因此,如果您键入mysum 1(在未编译程序上的 MATLAB 中,我也猜想如果您从已编译程序的 Windows 命令行中执行此操作,尽管我尚未对此进行测试)它将起作用,给出答案1,如果你输入mysum [1,2]它会起作用,给出答案3。请注意,mysum [1,2]不同于,因为它传递的是字符串而不是双精度数组。mysum([1,2]) '[1,2]'[1,2]

但是如果你输入mysum 1 2它会失败,因为你现在传入了两个字符串输入参数,并且你的函数被设置为只接受一个。

重写您的函数,使其接受可变数量的输入参数(看看varargin实现这一点),str2num依次应用于每个输入(如果您使用过,将varargin{1}适用于),然后单独对它们求和。varargin{n}varargin

于 2014-04-22T09:22:56.450 回答