問題タブ [matlab-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
119 参照

c - C プログラムから MATLAB 関数を呼び出す

重複の可能性:
C から MATLAB コードを呼び出す方法は?

C プログラムから MATLAB 関数を呼び出す方法はありますか?
私の仕事は、MATLAB を使用して C プログラムで生成された行列の疑似逆行列を計算することです。MATLAB から取得した出力を再度 C プログラムに渡し、そこで計算を行いたいと考えています。

0 投票する
1 に答える
1663 参照

c++ - matlab エンジンを使用する C++ プログラム Eclipse をコンパイルする

engdemo.cppmatlab エンジンを使用する例をコンパイルして実行するように Eclipse を構成しようとしています。

ここに書かれている指示に従いましたが、まだエラーがあります:

シェルからプログラムをコンパイルするとき、これらのコマンドを使用しますが、エラーがないので実行できます。

しかし、Eclipseでコンパイルする必要があります。何か助けはありますか?

0 投票する
1 に答える
227 参照

c - ruby Fixnum-> matlab mwSizeにSWIGタイプマップを使用する必要がありますか?

SWIGを使用してrubyからmatlabへのインターフェイスを構築するプロジェクトを更新しようとしています。matlab C-APIが変更され、実行時に次のエラーが発生します。

`mxCreateDoubleMatrix_730':タイプmwSizeの引数0が必要ですが、Fixnum 20(TypeError)を取得しました

tmwtypes.hで定義されているmwSizeが見つかりましたが、これはSWIGインターフェイスファイルに含まれていませんでした。

ただし、SwIGインターフェイスのインクルードセクションにtmwtypes.hを追加すると、TypeErrorが発生し、インクルードセクションと解析セクションの両方に追加すると、次のコンパイルエラーが発生します。

エラー:CPP #error ""このコードは、符号付き整数値の2の補数表現を使用してコンパイルする必要があります""。-cpperraswarnオプションを使用して、スウィッグ処理を続行します。

tmwtypes.hをあきらめて、私の解決策はSWIGインターフェースファイルに以下を追加することです。

完全なSWIGインターフェイスファイルは、 https ://github.com/morrifeldman/matlab-ruby/blob/master/ext/matlab_api/matlab_api.iで確認できます。

このタイプマップを追加すると、プログラムがコンパイルされ、完全に機能するように見えます。

私が答えたい2つの関連する質問があります:

  1. 私がmwSizeで持っているTypeErrorの正しい解決策です。代わりに何か他のことを試してみるべきですか?

  2. tmwtypes.hを含めると問題が解決すると思いました。なぜうまくいかなかったのですか?

参考までに、Xcode4.5.2でOSXMountainLionを使用しています。Makefileはgcc-4.2を呼び出しています。'gcc-4.2 --version'は'i686-apple-darwin11-llvm-gcc-4.2(GCC)4.2.1'を提供します

ありがとう!

0 投票する
2 に答える
610 参照

matlab - MATLAB エンジン: 不完全な入力が与えられた場合、engEvalString() は返されません

OS X でMATLABエンジンC インターフェイスを使用しています。engEvalString()

また

その場合、関数は決して戻りません。これをテストする最も簡単な方法は、engdemo.cの例を使用することです。これは、MATLAB コードの一部を要求して評価します (つまり、何でも入力できます)。

私のアプリケーションでは、ユーザーが任意の MATLAB 入力を入力して評価できるため、不完全な入力から簡単に保護できません。回避策はありますか? この状況でハングしないようにする方法engEvalString()はありますか、または実際に MATLAB に渡す前に任意のコードの正確性/完全性をチェックする方法はありますか?

0 投票する
1 に答える
2328 参照

matlab - Matlab エンジンの問題

Windows 7 の VS2010 で基本的な Matlab enginedemo.cpp を実行しようとしていますが、コードを実行しても、次のようになります。

常にエラー。

MatlabR2012b と MatlabR2012a の両方がコンピューターにインストールされていましたが、MatlabR2012a をアンインストールしてから、パス変数からすべての参照を削除しました。

x64 MatlabR2012b を実行しており、VisualC++ Win 32 コンソール アプリケーションを設定しています。

また、既にデバッグ環境を{MatlabRoot}\R2012b\extern\lib\win64\microsoftに設定しています。

C/C++ -> 追加のインクルード ディレクトリ: {MatlabRoot}\R2012b\extern\include

リンカー -> 一般 -> 追加のライブラリ ディレクトリ: {MatlabRoot}\R2012b\extern\lib\win64\microsoft

Linker->Input->Additional Dependencies: libmx.lib;libmat.lib;libeng.lib

私のMatlabバージョンも登録されているため、エラーは発生しません。

これに関する他のいくつかのstackoverflowの質問を検索しましたが、それらのほとんどはパス変数から古いバージョンのmatlabを削除することで問題を解決しているように見えましたが、うまくいきませんでした。

0 投票する
1 に答える
289 参照

c - MATLAB C マトリックス インターフェイス: mxDestroyArray はセルと構造体の要素を再帰的に破棄しますか?

質問はタイトルにあります:セルと構造体の要素mxDestroyArray()を再帰的に破壊しますか? MATLABのC行列ライブラリインターフェースについてです。

具体的な例で詳しく説明するために、 を使用して 1 行 1 列のセルを作成しmxCreateCellArray()、 を使用して数値行列を作成し、それをmxCreateNumericArray()セルの唯一の要素として設定するとします。セルを呼び出すとmxDestroyArray()、数値配列も一度に破棄されますか? または、数値配列、次にセルに対して個別に呼び出す必要がありますか? これは複雑な操作にはより合理的であるため、後者を望んでいます。

ドキュメントはこの点であいまいです。また、これに対する決定的な答えを与えるテストを考案することは容易ではありません。

0 投票する
1 に答える
1922 参照

matlab - C から MATLAB の Unicode 文字列にアクセスする

MATLAB エンジンまたは MEX C インターフェイスを介して、MATLAB 文字列の基礎となる Unicode データにアクセスするにはどうすればよいですか?

これが例です。Unicode 文字を UTF-8 でエンコードされたファイル test.txt に入れ、次のように読み取ります。

MATLAB で。

最初に を実行しfeature('DefaultCharacterSet', 'UTF-8')、次に C から実行するとengEvalString(ep, "s")、出力としてファイルからテキストが UTF-8 として返されます。これは、MATLAB が内部的に Unicode として保存することを証明しています。ただし、そうすると、MATLAB で得mxArrayToString(engGetVariable(ep, "s"))られるものunicode2native(s, 'Latin-1')が得られます。Latin-1 以外のすべての文字が文字コード 26 に置き換えられます。必要なのは、基礎となる Unicode データに任意の Unicode 形式 (UTF-8) の C 文字列としてアクセスすることです。 、UTF-16 など)、および非 Latin-1 文字を保持します。これは可能ですか?

私のプラットフォームは OS X、MATLAB R2012b です。

補遺:ドキュメントには、「[mxArrayToString()] はマルチバイトでエンコードされた文字をサポートする」と明示的に記載されていますが、それでも元のデータの Latin-1 近似しか得られません。

0 投票する
1 に答える
572 参照

matlab - MATLAB を PATH に追加せずに MATLAB エンジン アプリケーションを使用する

MATLAB エンジン アプリケーションに取り組んでいます。これを機能させるには、エンジン アプリケーションが特定の DLL (libeng および libmx) を検出できるように、MATLAB を PATH 環境変数に追加する必要があります。

MATLAB が COM サーバーとして登録されると、その場所がレジストリに書き込まれ、アクセスできるようになります。この情報を使用して、MATLAB を PATH に追加せずにエンジン アプリケーションを動作させる簡単な方法はありますか? エンジン アプリケーションは、理論的にはこれらの DLL の場所をレジストリから読み取ることができますが、問題は、(MATLAB エンジンのコンパイル手順に従って標準的な方法でコンパイルした場合) これらの DLL がないと起動すらできないことです。

私は winapi にあまり詳しくなく、COM にもまったく詳しくありません。

問題がレジストリからの情報に基づいて DLL を見つけられるようにする簡単な解決策はありますか?

0 投票する
1 に答える
748 参照

c# - COM を介して MATLAB エンジン インターフェイスをインスタンス化する際のエラー (Matlab C# 統合)

COM オブジェクトを使用して C# から Matlab 関数を呼び出しました。実行されますが、複数の呼び出しで、COM を介して matlab エンジン インターフェイスをインスタンス化するときに例外が発生します。

//COM を介して MATLAB エンジン インターフェイスをインスタンス化するため

それが与える例外:

タイプ 'MLApp.MLAppClass' の COM オブジェクトをインターフェイス タイプ 'MLApp.DIMLApp' にキャストできません。IID '{669CEC93-6E22-11CF-A4D6-00A024583C19}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: RPC サーバーを利用できません。(HRESULT からの例外: 0x800706BA)。

私はこれを理解することができません。どんな助けでも大歓迎です。