18

タイトルが示すように、私は孤立した話し言葉認識用の MATLAB コードを持っており、このプロジェクトを何らかの目的でPHPで作成された別のプロジェクトと統合できるようにしたいと考えています。

私は以前にそのような問題に対処したことがありません。つまり、PHP と MATLAB を統合する必要があるのは初めてなので、どこからどのように始めればよいか本当にわかりません。

いくつかの記事を読みましたが、有効にすることができませんでした。

PHP 5.4.9、MATLAB R2012A、および Windows 7 を使用しています。MATLAB プロジェクト ファイルはGitHub で確認できます。

4

4 に答える 4

19

ここにはいくつかのオプションがあります。

  • MATLAB が PHP アプリケーションが配置されるサーバー (現在の開発環境ではない) にインストールされている場合、PHP のコマンドにmatlab -r "..."相当するものを使用して、他のプログラム ( ) と同じように直接呼び出すことができます。EXECUTE以下にいくつかのリソースを示します (リンクされた質問も確認してください)。

    PHP と MATLAB スクリプトの間で入出力を渡す方法について、他の人がコメントしています。たとえば、WAV ファイルのパスを入力として受け取って処理し、結果のイメージをディスクに保存するように MATLAB 関数を設計できます。

    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 アプリケーションで読み取ることができます。

  • そうでない場合、利用可能な展開関連のツールボックスは何ですか? MATLAB CompilerおよびMATLAB Builder NEMATLAB Builder JAなどの関連ツールボックス。

    これらは、プログラムを実行可能ファイル/.NET アセンブリ/JAR ファイルにそれぞれコンパイルします。これらはすべて、無料で入手できるMCR ランタイムをインストールする必要があります。つまり、実行可能ファイルはターゲット マシンに MATLAB を完全にインストールする必要はなく、MCR ランタイムのみをインストールする必要があります。

    前と同じ方法で実行可能ファイルを実行します。

    もう 1 つの製品は、MATLAB コードを C++ プログラムに変換するMATLAB Coderです。コンパイルすると、外部要件なしで実行できます。

    MathWorks の新製品はMATLAB Production Serverです。個人的に私はそれについて何も知りません:)

  • もう 1 つのオプションは、PHP と MATLAB の間の通信に TCP/IP を使用することです。サーバーは、C MEX ファイルまたは Java クラスとして記述されたソケット プログラミングを使用して、MATLAB 側で実行されます。見る:

    クライアントは PHP アプリケーションです。アイデアは、MATLAB が接続をリッスンし、クライアントによって与えられた入力を読み取りeval、結果を返すことです。これは、シリアライゼーションや並行性などを処理する必要があるため、他のオプションよりも複雑です。利点は、クラウド上の複数のサーバーであっても、MATLAB を別のサーバーで実行できることです (この投稿を参照してください)。

最初に、プロジェクトに最適なアプローチを決定してください。そうすれば、特定の質問に簡単に答えることができます...常に最初にドキュメントを参照してください。MATLAB ツールボックスは非常に詳細にドキュメント化されており、通常は多くの例が含まれています。MATLAB Compiler 製品ファミリに固有のリソースをいくつか次に示します。

ASP.NET および Java JSP/サーブレット アプリケーションに集中していることに注意してください。あなたの場合、PHP アプリケーションは、上記の 2 つのオプションのいずれかを使用して構築された Web サービスを実行する中間層と通信します (または、前述のように、MATLAB Compiler を使用して構築されたプレーンな実行可能ファイルを実行する CGI のようなサイトを単純に設計します)。

于 2013-04-19T07:59:10.677 に答える
4

OPがPHP Webページからシステムコマンドを実行できるようにするために、ここに私の投稿が関連しています(以下にコピーされています)。

私たちは常にこれを行っています。私はそれらをブードゥーページと呼んでいます。ここにいくつかの作業コードがあります:

<?php
    $command="uptime"; $output; $retval; $errors="";
    exec ($command, &$output, &$retval);
    echo $output[0] . "\n";
    unset($output);
?>

そして、提供された Web ページへの出力:

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 名を使用します。

于 2013-04-15T23:12:55.597 に答える