2014-04-22 59 views
0

我使用matlab mcc創建一個獨立的應用程序exe文件,然後我使用php來調用exe文件。但我無法獲得函數返回值,它總是空的!這裏是在M檔mcc函數無法返回值,爲什麼?

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

注意兩件事情:

  1. 你有你的功能設置爲接受單個輸入參數。
  2. 從Windows命令行運行應用程序時,參數作爲字符串傳入。

所以,如果你(在MATLAB上未編譯的程序,我也會想,如果你在編譯的程序在Windows命令行做到這一點,雖然我沒有測試此)型mysum 1它會工作,給出答案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 ),然後分別求和它們。