問題タブ [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 投票する
1 に答える
240 参照

c - ヘッダー ファイルのリンク: Matlab エンジンと OpenGL

Matlab Engineを介して Matlab とやり取りし、 Glutを介して OpenGL を利用する C プログラムを作成しようとしています。これらのいずれか (Matlab エンジンまたは Glut) を実行する C プログラムのコンパイルと実行は成功しましたが、両方を使用するプログラムのコンパイルに問題があります。

特に、gcc で次のコマンドを使用していますgcc -o test test.c -I/Applications/MATLAB_R2014a.app/extern/include/ -framework GLUT -framework OpenGL。-I フラグは、engine.h および matrix.h ヘッダー ファイルが配置されているディレクトリへのリンクを示します。コンパイラは、Matlab エンジンとマトリックス ライブラリ関数が未定義のシンボルであると不平を言います。

これが、コンパイルしようとしている test.c ファイルです。今は特に何もする必要はありません。まず、C プログラムで Matlab Engine と OpenGL の両方を使用できるかどうかを確認したいだけです。

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

c - Matlab 変数への C ポインター

大規模な Matlab データ構造に繰り返しアクセスする必要がある C プログラムに取り組んでいます。これは、OpenGL を使用したグラフィックを多用するプログラムであるため、高速である必要があります。

Matlab エンジンでこのデータ構造に繰り返しアクセスすると、時間がかかりすぎるようです (engGetVariable と engPutVariable の呼び出しごとに約 10 ~ 20 ミリ秒)。これは、これらの関数がデータをメモリにコピーするためだと思います。

したがって、データ構造自体で engGetVariable を使用する代わりに、データ構造へのポインターを取得しようとしています。ポインターで engGetVariable を呼び出すと、最初にメモリ内のデータをコピーしなくても、ポインターを逆参照することで C のデータ構造にアクセスできます。しかし、これまでのところこれを機能させることができませんでした。このようなことは可能ですか?

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

c++ - Windows 7 64 ビットで Matlab エンジン 2014a が起動しない - 2013a dll が見つからない

VS2012 または VS2013、Intel コンパイラを使用する C++ プログラムから、matlab 2014a、Win7 64 ビット、64 ビット ビルドを使用して Matlab エンジンを起動できません。Matlab 2013a を使用してエンジンを正常に始動できます。2014a にリンクすると、プログラムは libmwmfl_scalar.dll が見つからず、起動しないと不平を言います。これは 2013 に含まれていた dll ですが、2014a には含まれていないようです (プログラムまたはコンパイラ ランタイム ディストリビューションのいずれかに)。2013a にリンクしても問題ありません。2014a に更新すると、古い DLL を要求するのはなぜですか? すべてのインクルード、ライブラリ、環境を 2014a に変更し、クリーン後に再構築しました。プロパティで libmwmfl_scalar.dll への明示的な参照がなく、すべてのフォルダーを 2014a に変更しました。Matlab を使用する他のものにはリンクしていません。この dll は '

設定は、関連するコンテキストを提供する別の投稿 ( Visual Studio で MATLAB を直接呼び出す (マルチスレッド) ) のこのプロパティ シートと同じです。

Ben - いいえ、私は Mex ファイルを使用していません。これは Matlab を呼び出すコードです

これが私のパスで、2013a と 2014a の両方が存在します。また、2013a の削除、VS の再起動、再構築を試みましたが、それでも古い DLL を探します。

C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler;C:\Program Files (x86) \Intel\icsxe\2013.1.046\bin;C:\Program Files\MATLAB\R2014a\bin;C:\Program Files\MATLAB\R2014a\bin\win64;C:\Users\Rodney\Anaconda\Lib\site- packages\PyQt4;C:\Program Files (x86)\Intel\Trace Analyzer and Collector\8.1.4.045\bin;C:\Program Files (x86)\Intel\MPI\4.1.3.045\em64t\bin;C:\ Program Files (x86)\Intel\MPI\4.1.3.045\ia32\bin;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\mpirt;C:\Program Files (x86)\ Common Files\Intel\Shared Libraries\redist\ia32\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler;C:\PROGRA~2 \Intel\MPI\411~1.036\em64t\bin;C:\PROGRA~2\Intel\COMPOS~1\bin\intel64;C:\PROGRA~2\Intel\COMPOS~1\redist\intel64\compiler;C :\PROGRA~2\MICROS;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files ( x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Common Files\Seagate\SnapAPI\;C:\Program Files\MATLAB\R2014a\runtime\win64; C:\Program Files\MATLAB\R2014a\polyspace\bin;\win64;C:\Program Files\MATLAB\MATLAB Compiler Runtime\v83\runtime\win64;C:\Program Files\MATLAB\R2013a\runtime\win64;C :\Program Files\MATLAB\R2013a\bin;C:\Program Files\MATLAB\R2013a\bin\win64;C:\Users\Rodney\Anaconda;C:\Users\Rodney\Anaconda\Scripts;C:\PROGRA~2\Gambit-C\v4.7.2\bin;C:\Users\Rodney\AppData\Roaming\cabal\bin; C:\Program Files (x86)\Intel\Trace Analyzer and Collector\8.1.4.045\dll\impi64;C:\Program Files (x86)\Intel\Trace Analyzer and Collector\8.1.3.037\dll\impi64;C: \Program Files\smartmontools\bin;C:\ghc-7.6.3\bin;C:\Program Files (x86)\WinAnt\bin;c:\windows\system32;C:\Users\Rodney\AppData\Roaming\ cabal\bin\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\\Program Files (x86)\WinAnt\bin;c:\windows\system32;C:\Users\Rodney\AppData\Roaming\cabal\bin\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\; C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\\Program Files (x86)\WinAnt\bin;c:\windows\system32;C:\Users\Rodney\AppData\Roaming\cabal\bin\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\; C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\

更新: VS2013 で新しいソリューションとプロジェクトを作成しようとしましたが、ML2014a で動作します。したがって、既存のプロジェクトまたはソリューションに影響を与えるものでなければなりませんが、Matlab への間接的な依存関係がなく、すべてのパスを 2014a バージョンに設定しているため、追跡するのは非常に困難です。私のプログラムは、外部ライブラリ Boost、Intel MKL、Armadillo、Eigen、Quantlib を使用しています。完全に困惑した。

更新 2: Visual Studio 環境外で 2014a にリンクすると、プログラムが実行されることを確認しました。libmwmfl_scalar.dll がないために実行されないのは、デバッグ目的 (「デバッグ/デバッグ開始」または「デバッグ/デバッグなしで開始」) で VS から実行しようとしたときです。そのため、何らかの理由で、プログラム自体が使用していないときにVSがプログラムを実行することを主張しています。

0 投票する
3 に答える
47 参照

matlab - 別の行列へのインデックスとしての疎行列値

S- NxNスパース行列。
A- Mx1 ベクトル。

のゼロ以外の値Sは のインデックスですA。の' 番目のエントリで:の' 番目の行の ゼロ以外の値ごとに、このすべての合計を計算して計算し、それを の' のエントリに入れるような
ベクトルを計算したい。xix
jiSA[j]jix

疑似では、次のようになります。

最も効率的な方法でmatlabでそれを行うにはどうすればよいですか?

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

python - matlab から python に値を返す (辞書として?)

Python用のmatlabエンジンを使用しています。私の目標は、python から matlab スクリプトに情報を渡し、結果を保存することです。必要なすべての値の matlab 配列を作成した場合、これを行うことができましたが、辞書が本当に必要です (したがって、どの値がどの変数に対応するか、または将来 matlab スクリプトを変更した場合に覚えておくことができます)。これは私が試したことです:

MATLAB 関数:

そしてPythonで:

残念ながら、これは私の辞書を返しませんが、何をすべきかわからない matlab.object を返します。私の辞書を返すことは可能ですか、それとも単に matlab から数値を返して Python で辞書を作成する必要がありますか?

0 投票する
3 に答える
1809 参照

python - Python 仮想環境から matlab を呼び出す

システムの python から MATLAB を呼び出すことができます。

しかし、仮想環境をロードすると、segfault が発生します。

システム python と仮想環境の両方に対してsetup.py インストール手順を実行しました。

this one のような質問を期待していましたが、DYLD_LIBRARY_PATH明示的に設定する必要がありますが、システムの python を実行するときにその環境変数が設定されていません。

この segfault を引き起こす 2 つの Python 実装の違いは何ですか?

編集:2013年後半の13インチMacbook ProでOS X Yosemiteを使用しています。新しくインストールした仮想環境(仮想マシンではありません)からPython 2.7を使用しています。

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

python - Python から Matlab 関数にタプルを渡す方法

Pythonスクリプトから呼び出すMatlab関数があります:

機能tstFncは次のとおりです。

ただし、Matlab は 3 つではなく 1 つの入力を受け取るため、これは機能しません。これを機能させることはできますか?

注:これは私がやりたいことの単純化されたケースです。実際の問題では、Matlab 関数に渡す可変数のリストがあり、これは を使用して Matlab 関数で解釈されvararginます。

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

python - Python で matlab.engine をインポートしようとすると、「プロセスは終了コード 139 で終了しました」というエラーが発生する

Python 用の matlab エンジンを確認したいと思います。ここの指示に従ってインストールしました。でもラインだけ

プログラムが終了コード 139 で終了しますが、これはある種のメモリ障害であると理解しています。Python 2.7.10 (Anaconda 2.3.0 ディストリビューション)、Matlab 2014b、MacOS 10.10、x86_64 を実行しています。

編集:これがスタックトレースです。

編集 2: どの種類のトレースがより役立つかはわかりませんが、ここで定義された trace_calls 関数を使用してトレースを生成しようとしました。これらはその最後の数行です:

これを修正する方法を知っている人はいますか?

ご協力いただきありがとうございます。

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

python - Matlabエンジン配列をnumpy ndarrayに効率的に変換するには?

私は現在、レガシーMatlabコード(Matlabエンジンを使用)で処理するいくつかのステップを実行し、残りをPython(numpy)で処理する必要があるプロジェクトに取り組んでいます。

matlab.mlarray.double結果を Matlabから numpyに変換するのが非常にnumpy.ndarray遅いことに気付きました。

別の ndarray、リスト、および mlarray から 1000 個の要素を持つ ndarray を作成するためのコード例を次に示します。

次の時間がかかります。

変換には、リストからの変換の約 100 倍の時間がかかります。

変換を高速化する方法はありますか?

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

python - matlab-engine を介して Python で eng.workspace を使用すると無限にビジーになる

Python で matlab.engine を介して Matlab ワークスペースに書き込む際の問題を特定しました。誰でも手伝ってもらえますか?

eng.workspace を呼び出すたびに、「タイムアウト」します。つまり、Matlab が無限のビジー状態になり、Python または Matlab でスクリプトを続行できなくなります。実際、eng.workspace 呼び出しから離れることはありません。

ctrl-c を押してもコマンドは実行され、変数は matlab ワークスペースに保存されますが、その行以降は何も実行されません。

コンテキストのコード:

この python スクリプトを手動で実行すると (pyCharm または cmd\python)、すべてが完全に実行され、2 つの変数は matlab ワークスペースに完全に配置されます。ただし、matlab からプログラムで実行すると、最初の eng.workspace に引っかかって続行しません。

出力 (Matlab) : Ctrl-C 終了の Matlab コマンド ウィンドウとワークスペースの結果

どんな助けでも大歓迎です。

編集:声明ではなく質問に変えました