5

いくつかの Matlab コードとそのための GUI があり、Matlab がインストールされていないコンピューターで使用できるように、スタンドアロンの .exe を作成したいと考えています。

Matlab コンパイラとその使用方法については知っていますが、MATLAB Compiler Run-Time (MCR) がインストールされている場合にのみ機能する .exe が作成されます。

私が興味を持っているのは、Matlab コードを使用しているが MCR に依存しないスタンドアロンの .exe を作成する方法があるかどうかです。他に何もインストールする必要なく、クリックすると実行されるようにしたい。

C で Matlab を使用できることは知っていますが、C でコードを使用する方法はありますか? それができるオープンソースのMatlabの代替品はどうですか?

最後の手段として、Matlab コードを別の言語で書き直すとしたら、どの言語をお勧めしますか? 私はCかPythonを考えていました。

ありがとう。

4

5 に答える 5

2

MATLAB コンパイラを調べてからしばらく経ちましたが、私の記憶が正しければ、以前は完全に実行可能ファイルを生成するのではなく、C/C++ コードを生成できました。ハングアップは常に、コードが使用したツールボックスと、コンパイラがそれらをサポートしているかどうかでした。MATLAB アプリケーションをサーバーにインストールして、結果を得るためにデスクトップ クライアントの電話を使用できる可能性はありますか?

他の言語に関する限り、NumPy と SciPyを matplotlib (matplotlib.sf.net) と組み合わせて調べます。私は現在、MATLAB 開発者と一緒に作業していますが、これまでのところ、彼はその経験に非常に満足しています。

于 2010-07-07T20:37:43.290 に答える
2

MCR は必須ですが、トリックがあります。実際にインストールする必要はなく、PATH で利用できるだけです。MCR の実行には、レジストリ エントリや、インストール プロセスから特別なものは必要ありません。読み取り可能な MCR ファイルと、プログラムの起動時に PATH をチェックすることを含む通常のルックアップ メカニズムによって DLL を検索できる必要があるだけです。

たとえば、ネットワーク ドライブに「インストール」された MCR を使用して、コンパイル済みの Matlab アプリを実行しました。X:\Matlab\MCR\R2010b-win32MCR インストーラーを 1 台のマシンで実行し、通常の場所ではなくネットワーク ドライブにインストールしますC:\Program Files。次に、実際の .exe ファイルを呼び出す前に、PATH に追加するラッパー スクリプトを介してプログラムを起動しX:\Matlab\MCR\R2010b-win32\bin\win32ます。MCR インストーラーが実行されていなくても、同じドライブを認識している他のマシンでプログラムが実行されます。 . (ネットワークから MCR をロードするとパフォーマンスが低下するため、最終的には停止しました。)

このトリックを使用して、MCR をアプリケーションにバンドルできます。アプリケーションのディレクトリ ツリーのサブディレクトリに MCR インストール全体 (インストーラー プログラム自体ではなく、インストールの結果として生じるディレクトリ ツリー) を貼り付け、アプリへのエントリ ポイントを、その MCR ディレクトリを貼り付ける .bat ファイルまたは他のラッパー スクリプトにします。 MCR 依存の .exe ファイルを実行する前に、PATH に追加します。

もちろん、法務担当者に確認して、これがライセンス条件に違反していないことを確認してください。

于 2013-04-25T14:32:28.780 に答える
1

MathWorks は最近、新製品MATLAB Coderを発表しました。MATLAB コードから C\C++ コードを生成できます (実行可能ファイルではなくソース コードを生成します)。生成されたコードは移植可能であり、MCR に依存しませんが、コア MATLAB 言語機能のサブセットのみをサポートします。

于 2011-09-11T15:04:55.707 に答える
1

少し調べてみましたが、MCR を使用するか、コードを別の言語に変換するしかないのではないでしょうか。.exe ファイルを作成するために、MathWorks がコンパイラのみを使用することを望んでいることは理にかなっています。

すでにその言語に精通している場合、および/または達成しようとしていることに十分な時間がある場合にのみ、別の言語を検討してください。さらに、Matlab で作成していない関数を使用している場合は、それらも作成する必要がありますが、これは非常に困難/不可能な場合があります。

上記のいずれにも問題がなければ、どの言語を使用するかはあなた次第です。C と Python だけに限定されているわけではありません。私の意見では、Matlab は、少なくとも構文に関しては、他の一般的な言語と非常によく似ています。どちらの方法でも学習を行う必要があるため、知っている言語を使用するか、ヘルプを見つけやすい言語を選択することをお勧めします。C# と Java は、より「有名な」言語の 2 つです。

于 2010-07-07T20:35:50.953 に答える
0

Matlab の「コンパイラ」はコンパイラではありません。Matlab m コードを C++ コードに変換し、それを Visual Studio などの実際のコンパイラに送信します。作成されるコードは、実際には人間が判読できるものではありません。

スタンドアロン アプリを作成するには、次のツールボックスをインストールします (支払った価格にかかわらず)。

MATLAB Builder JA、MATLAB Builder NE、MATLAB Compiler

ドライブ上の実際のコンパイラを指定して、Matlab コンパイラをセットアップします (つまり、mbuild -setup)。

コンパイラを選択してください: [1] Microsoft Visual C++ 2008 SP1 in C:\Program Files (x86)\Microsoft Visual Studio 9.0

次に、(タイプ deploytool) を使用して、メインを作成し、さまざまなヘルパー関数などを定義します。Windows コンソールまたはスタンドアロンのセクションを作成します。次にビルドをクリックします。exeファイルを作ってくれます。必要に応じてDLLなどにコンパイルすることもできます。

「コンパイラ」の新しいバージョンは、ライセンスされているすべてのツールボックスである eval のコンパイルをサポートし、たとえば xml ファイルの解析などに DOM を使用できるようにする Java クラスのインポートをサポートしています。

Matlab がインストールされていないコンピューターで生成された exe ファイルを使用するには、Matlab MCR を入手してインストールする必要があります。MCR は、コンパイルされたコードの作成に使用した Matlab のバージョンと正確に一致する必要があります。

よろしく、

イヴァン

于 2013-04-18T14:16:48.073 に答える