linux命令列中php執行matlab計算

來源:互聯網
上載者:User

首先將matlab 的演算法處理寫成函數存放,通過php指令碼在命令列中進行調用。

方法背景:

 需要通過matlab來對若干矩陣資料進行計算,然後輸出結果。主要方法是在matlab中載入csv格式的資料,計數完成後輸出,然後對結果進行儲存。該過程由程式自動運行,無需人工幹預。

實現方法如下:

1。編寫好M檔案。例子如下:

function result=coe(R,XR)<br />[m,n]=size(XR);<br />H=(2*XR'*XR);<br />F=-2*R'*XR;<br />A=-eye(n);<br />B=zeros(n,1);<br />Aeq=ones(1,n);<br />Beq=1;<br />for i=1:11<br /> F=-2*R(:,i)'*XR;<br />%計算得到:W<br />W=quadprog(H,F,A,B,Aeq,Beq);<br />%計算自變數<br />Y1= XR*W;<br /> Y=[Y1,ones(m,1)];% 包含常數的迴歸變數<br />%迴歸<br /> x=R(:,i);<br /> w3=REGRESS(x,Y);<br /> b(i)=w3(1,1);<br />end<br />%print('倉位')<br />disp(b)<br />result =b</p><p> 

下面這個函數用於調用所有的函數,這個可以更加具體情況來寫,為了簡單,我把多條命令放在一個函數裡面來調用。

function matlabcalc()<br />R = csvread('testR.csv');<br />XR = csvread('testXR.csv');<br />RES = coe(R,XR);<br />csvwrite('/home/ligl/matlabsrc/matrixadd/res.dat',RES,0,0);<br />end 

 

2.編寫php代碼。

 

<?php<br /> //start matlab first<br /> $cmd="matlab -nodisplay -r /"addpath /home/ligl/matlabsrc/matrixadd//",/"matlabcalc()/"";<br /> print $cmd;</p><p> $wline = system($cmd,$retval);</p><p>?> 

說明:

a).首先須配置好matlab環境變數,將matlab的安裝目錄添加$PATH環境變數,這樣可以直接通過matlab命令啟動matlab。

b).由於程式是在後台執行,無須開啟matlab的GUI介面,故添加參數-nodisplay 。

c).傳遞matlab命令列中啟動並執行命令,-r後面表示在matlab中執行的命令。每條命令必須用雙引號包含,多條命令之間用“,”(逗號)分隔。

d).記得一定要設定工作目錄,也就是m檔案所在的位置,否則無法調用m檔案中的函數。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.