問題タブ [mex]
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.
matlab - -fPICなしでコンパイルされたコードに対してmexファイルをリンクする方法はありますか
Matlab/Octave でアクセスするためにいくつかの C コードをラップしようとしています。問題は、コードが -fPIC でコンパイルされていないことです。これは、mex ファイルでラップするために必要なようです。すべてのソース コードにアクセスできるわけではないため、-fPIC を使用して再コンパイルすることはできません。この問題を回避する方法はありますか?
matlab - OpenCV関数を使用してMatlab用の64ビットMexfileをコンパイルします
やあみなさん!私はmexw32ファイルを取得したMatlab(2008)でopencvライブラリの関数を使用しています。残念ながら、これらは、Matlab が 64 ビット バージョンとして自動的にインストールされる 64 ビット Windows 7 システムでは動作しなくなりました。64 ビット版をコンパイルするには何が必要ですか? 元の C ファイルはありませんが、関数は opencv 関数の単なるラッパーです。(コンパイルには VisualStudio 2008 または 2010 を使用できます)
アドバイスやヒントをありがとう!
matlab - MAT ファイルからのインデックス付きの特定の変数の読み込み
大量の RAM を搭載したマシン上にフレームワークがあり、非常に大きくて特別に名前が付けられた 1 つの行列を含む MAT ファイルを生成します。この行列の計算は 1 回だけ実行され、多くの時間がかかります。最後に、ディスク上の MAT ファイルに保存されます。
使用段階で、この MAT ファイルをロードする必要があります。問題は、すべてのデータが必要ないことです。そのマトリックスから特定の列を選択するだけです。
たとえば、サイズ [500x250000] のファイル crfh.mat に行列 'sign' があり、double と入力します。そのマトリックスから「ids」を使用してベクトルのみをロードすることに興味があるかもしれません:
sign( :, ids )
それを行う方法はありますか?Web を検索しましたが、そのような機能の必要性を表明した人は誰もいないようです。次のような MEX 関数 select_mat() を作成することを考えています。
sign_sub = select_mat( mat_file, var_name, ids );
windows - FFTW を Matlab Mex ファイルにリンクする
mex ファイルで FFTW コードを実行しようとしています。これは厳密に開発とテストを目的としています。グーグルで調べたところ、他の人が同様のことを試み、関連する問題を抱えていることがわかりましたが、解決策は見つかりませんでした。mex ファイルを実行しようとすると、Matlab から次のように通知されます。
??? エラー使用 ==> chirpTransform.mxCta 無効な MEX ファイル '\removed\my\directory\+chirpTransform\mxCta.mexw32': 指定されたプロシージャが見つかりませんでした。
.
LCC には問題があるように見えるため、MinGW で gnumex を使用して mex ファイルをビルドしています。FFTW サイト ( http://www.fftw.org/install/windows.html )の 32 ビット DLL を使用してみました。Matlab 2009b bin ディレクトリにある fftwf3.dll を使用してみました。Msys/MinGW を使用してソースから dll をビルドしました。いずれの場合も、結果は同じです。すべての場合において、lib ファイルを生成するために次のことを行いました。
c:\gnumex\mexdlltool.exe -d libfftw3f-3.def -D libfftw3f-3.dll -l libfftw3f.lib --as C:\MinGW\bin\as.exe
また、ビジュアル スタジオの lib.exe ツールを使用してみたり、さまざまな mexdlltool フラグを試したりしました。
Matlab の loadlibrary 機能を使用して、fftwf3-3.dll の関数を直接呼び出すことができるようです。DLL が問題ではないように見えるので、fftwf3 の静的バージョンをビルドし、それを mex ファイルに直接リンクしてみました。私は同じ結果を得ました!FFTW コードを削除すると、mex ファイルは正常に動作します。私はこの時点でほとんどあきらめており、別のテスト方法を考え出すのに苦労しています.
c++ - matlab mex ファイルと C++ dll (Windows)
クラス Test を持つ DLL があります。ヘッダ:
およびソース:
今、私はmexファイルからそれを使用しています:
問題は、その変数str
がメソッドに正しく渡されないことですdoit
。メソッド内にはラビッシュが含まれています。これは、参照によって渡されたすべてのオブジェクトで発生することがわかりました。私が間違っていることは何ですか?助けてください。
PS: 宣言を 'int doit(const char *)' に変更すると、すべて正常に動作します。
c# - 無効な mex ファイル、morphmex.mexw32 指定されたモジュールが見つかりませんでした
画像処理用のプログラムを Matlab で作成し、そのプログラムの .dll を matlab builder ne を使用して作成しました。私のmatlabのバージョンは2010aです。matlab 関数を使用するプログラムを c# で作成しました。matlab がインストールされているコンピューターで動作しました。しかし、MCR を matlab のないコンピューターにインストールしてプログラムを実行しようとすると、ac# 例外がスローされました。それは言った:
MWMCR::EvaluateFunction エラー 無効な MEX ファイル ...\toolbox\images\images\private\morphmex.mexw32': 指定されたモジュールが見つかりませんでした。=>MYMATFUNC.m のエラーは 6 です。
... Matlab M コード スタック トレース ... ファイル ...\toolbox\images\images\private\morphop.m,name ....
誰もが問題を解決するのを助けることができますか?
c++ - ビジュアル C++ コンパイラ (Visual Studio 2010) を使用した可変配列サイズのエラー。この問題を回避するにはどうすればよいですか?
GCC で以前のビルドと同じように機能した C++ ファイルをコンパイルするときに、いくつかの問題が発生しています。問題は、可変配列サイズのベクトルを使用していることです。
現在、Visual-Studio 2010 C++ コンパイラを使用して、Matlab 64 ビット Mex ファイルをビルドしています。VC++ ではコンパイル時にサイズが不明な配列を使用できないため、次のエラー メッセージが表示されます。
エラー 2057: 定数式が必要です エラー 2466: エラー 2133: 不明なサイズ
GCC コンパイラ オプションを使用して 64 ビット mex ファイルをビルドする方法や、Matlab で別の 64 ビット コンパイラを使用してビルドする方法はありますか?
前もって感謝します!!
visual-studio-2008 - mex ファイルからの dll の明示的/暗黙的な読み込み
私の質問はこれの重複の可能性があります: matlab mex files and C++ dll (windows)ですが、正確ではありません。
Matlab の mex ファイル (Visual Studio 2008、Windows 7 64 ビット、Matlab 2010b) から dll を明示的にロードしようとすると、実行時にロードに失敗します (NULL ハンドルを取得します)。mex ファイルで使用されていない場合、同じコードは正常に機能します。
.lib ファイルにリンクして暗黙的にロードしようとするとunresolved external symbol
、dll で定義されている関数に関するリンカ エラーが発生します。繰り返しますが、mex ファイルで使用されていない場合、同じコードは正常に機能します。
理由は上記の SO の質問の回答と同じですか、それとも何か不足していますか? 理由が同じである場合、上記の質問で提案されたもの以外に別の解決策はありますか?
matlab - FORTRAN-MATLABMEXファイルエラー
これはサブハッシュです。fortran-matlabmexファイルのリンクに問題があります。MATLABR2010aを実行しています。私はMATLABでFortranサブルーチンをmexしようとしています。MSYS、MinGW、gfortranをインストールしました。また、c:\ document\MATLABフォルダーにgnumexをダウンロードして抽出しました。gnumexと入力して、インストール設定を実行しました。この時点で、ウィンドウポップアップが表示され、次のように入力しました。
- MinGWのルートディレクトリ--->c:\ mingwを指していますb)Cygwinの
- ルートディレクトリ----->空白のままc)
- g95.exeへのパス------>c:\ mingw \ bin
- gfortran.exeへのパス------>c:\ program files \ gfortran \ bin e)
- gnumexユーティリティへのパス------>c:\ users ..... \ matlab \ gnumex
- 環境リンクタイプ------>MinGW
- mexdllまたはengineを生成します----->mex
- コンパイル用の言語------->fortran77
- スタブを追加------>いいえ
最適化レベル----->-O3
ライブラリと.defファイルのパスc:\ users ... \ Roaming \ MathWorks \ MATLAB \ R2010a \ gnumex
作成するMexオプションファイル:c \ users ... \ Roaming \ MathWorks \ MATLAB \ R2010a \ mexopts.bat
上記は、gnumexを使用したmexのインストールセットアップです。make options fileを押すと、「mex.plを訂正できません.....」という警告メッセージが表示されます。「書き込み用にc:... \ R2010a \ bin\mex.plを開くことができません」
[OK]をクリックすると、mexopts.batの上書きを確認するように表示されます。確認を押すと、optファイルが作成されます。
この時点で、mexセットアップの準備ができているはずです。しかし、fortran mexの例xtimesy.fなどを実行すると(コマンドプロンプトでmex filename.fを使用します)、次のエラーが発生します
g77:getValidInputLinkLibraries:そのようなファイルまたはディレクトリはありませんc:\ prog〜1 \ MATLAB \ R2010A \ BIN \ MEX.PL:エラー:「xtimesy.mexw32」のリンクに失敗しました。---> mexat222の使用中にエラーが発生しました。正常に完了できません。
このアンインストールを数回試しましたが、同じエラーが発生しました。誰かが私がどこで間違っているのか教えてくれませんか。これはg77をリンクするための正しい手順ではありませんか?これに少し光を当ててください。
お時間をいただきありがとうございます。
ありがとう。
c++ - 極イメージをデカルト イメージに変換
極座標 (軸は角度 x 半径) の画像をデカルト座標 (軸は x と y) の画像に変換しようとしています。
これは pcolor() を使用して matlab で十分に単純ですが、問題は mex ファイル (Matlab への c++ インターフェイス) でこれを行う必要があることです。これは、Matlab が配列コンテナーのみを使用することを除いて十分に簡単に思えるので、これを行うための巧妙で雄弁な方法は考えられません。
私は画像の次元にアクセスでき、入力画像配列を C++ のマトリックスとして再パッケージ化して変換を実行する非常に面倒な方法を想像できますが、これは面倒で問題があります。
また、xy プレーンのポイント間のギャップを補間できる必要があります。
何か案は?