正如标题所示,我具有用于孤立口语识别的MATLAB代码,出于某种目的,我希望能够将此项目与使用[[PHP制作的另一个项目集成在一起。
我以前从未处理过这样的问题。换句话说,这是我第一次需要集成PHP和MATLAB,因此我真的不知道从哪里开始以及如何开始。我已经阅读了几篇文章,但我无法使其有效。
我有PHP 5.4.9,MATLAB R2012A和Windows 7。可以看到MATLAB项目文件on GitHub。
matlab -r "..."
命令等效的方法,像任何其他程序(EXECUTE
)一样直接调用它在PHP中。这里有一些资源(请确保也检查链接的问题):function myFunc(filename)
[y,Fs] = audioread(filename);
img = my_process_func(y, FS);
imwrite(img, 'out.png');
end
哪个从PHP调用为:
% Of course you have to make sure "myFunc" is available on the MATLAB path. % Think: "addpath(..)" or just "cd(..)" into the directory first matlab -wait -nodisplay -r "myFunc('audio.wav'); quit;"
然后您可以在PHP应用程序中读取输出图像。
这些将分别将您的程序编译为可执行文件/.NET Assembly / JAR文件,并且所有这些文件都需要安装免费提供的MCR Runtime。换句话说,可执行文件不需要在目标计算机上完整安装MATLAB,而只需在MCR运行时安装。
您将以与以前相同的方式运行可执行文件。
另一个产品是MATLAB Coder,它将您的MATLAB代码转换为C ++程序。编译后,它可以运行而无需任何外部要求。
[MathWorks的新产品是MATLAB Production Server。我个人对此一无所知:)
eval
,然后返回结果。这比其他选项要复杂得多,因为您必须处理序列化和诸如并发之类的其他事情。优点是MATLAB可以在单独的服务器上运行,甚至可以在云上的多个服务器上运行(请参见this post)。因此,首先确定哪种方法最适合您的项目,然后可以更轻松地回答特定的问题...只需始终先查阅文档,MATLAB工具箱的文档非常齐全,通常包括许多示例。以下是特定于MATLAB Compiler产品系列的更多资源:
我们一直都这样做。我称它们为伏都教页面。这是一些工作代码:
<?php
$command="uptime"; $output; $retval; $errors="";
exec ($command, &$output, &$retval);
echo $output[0] . "\n";
unset($output);
?>
以及输出到网页的输出:
13:40:19 up 22 days, 23:14, 0 users, load average: 0.04, 0.02, 0.00
以及我在下面的注释中添加的附加说明:相对路径和绝对路径可能会很痛苦...$command
可能需要为/usr/bin/uptime
,或者另一个可能为/usr/bin/ls /home/chris/ftp
。通常,脚本的工作目录是它们在文件系统中的位置。 MATLAB是Windows程序,对吗?我的经验是,您将需要程序的绝对路径以及作为参数传递的任何文件,例如:$command="c:\\matlab\\matlab.exe c:\\www\\somefile.wav"
然后,对于愚蠢的NTFS名称,需要使用单引号,TAB命令行完成对于示例来说效果很好。或使用带有〜的正确8.3名称。
shell_exec()
。困难的部分是采用以下方式修改您的MATLAB代码(对不起,我没有读过):
char
字符串)接收其输入;matlab -nojvm -nodesktop -r "run <the-script>.m"
matlab -nojvm -nodesktop -r "<the-script>"
matlab -nojvm -nodesktop -r "run <the/path>/<the-script>.m"
Windows中的
matlab
必须在您的环境路径中。 How-to。如果您需要将脚本编译为Java:
java -jar yourjarfile.jar
更多注释: