您的位置:首页 > 运维架构 > Linux

linux命令行中php执行matlab计算

2010-12-15 17:28 253 查看
首先将matlab 的算法处理写成函数存放,通过php脚本在命令行中进行调用。

方法背景:

需要通过matlab来对若干矩阵数据进行计算,然后输出结果。主要方法是在matlab中加载csv格式的数据,计数完成后输出,然后对结果进行保存。该过程由程序自动运行,无需人工干预。

实现方法如下:

1。编写好M文件。例子如下:

function result=coe(R,XR)
[m,n]=size(XR);
H=(2*XR'*XR);
F=-2*R'*XR;
A=-eye(n);
B=zeros(n,1);
Aeq=ones(1,n);
Beq=1;
for i=1:11
F=-2*R(:,i)'*XR;
%计算得到:W
W=quadprog(H,F,A,B,Aeq,Beq);
%计算自变量
Y1= XR*W;
Y=[Y1,ones(m,1)];% 包含常数的回归变量
%回归
x=R(:,i);
w3=REGRESS(x,Y);
b(i)=w3(1,1);
end
%print('仓位')
disp(b)
result =b


下面这个函数用于调用所有的函数,这个可以更加具体情况来写,为了简单,我把多条命令放在一个函数里面来调用。

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


2.编写php代码。

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

$wline = system($cmd,$retval);

?>


说明:

a).首先须配置好matlab环境变量,将matlab的安装目录添加$PATH环境变量,这样可以直接通过matlab命令启动matlab。

b).由于程序是在后台执行,无须打开matlab的GUI界面,故添加参数-nodisplay 。

c).传递matlab命令行中运行的命令,-r后面表示在matlab中执行的命令。每条命令必须用双引号包含,多条命令之间用“,”(逗号)分隔。

d).记得一定要设置工作目录,也就是m文件所在的位置,否则无法调用m文件中的函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: