問題タブ [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 - matlab mexのステータスコード2のビルドエラー
.m ファイルを .mexmaci64 にコンパイルする際にビルド エラーが発生します。私の matlab バージョンは 2011a、プラットフォーム Mac OS X 10.6、Xcode 3.2 を使用しています。
エラー文:
??? ビルド エラー: コンパイルでエラー ステータス コード 2 が返されました。詳細については、ターゲット ビルド ログを参照してください。
ターゲット ビルド ログ:
3 mphmm_getEstimation_data.c:13 からインクルードされたファイル: 4 mphmm_getEstimation_data.h:30: エラー: 予期される '='、','、';'、'asm' または ' attribute ' が 'xb_emlrtRSI' の前にある 5 mphmm_getEstimation_data.h:31 : エラー: 予期された '='、','、';'、'asm' または ' attribute ' が 'nc_emlrtRSI' の前にある 6 mphmm_getEstimation_data.h:32: エラー: 予期されていた '='、','、';'、' asm' or ' attribute ' before 'oc_emlrtRSI' 7 mphmm_getEstimation_data.h:33: error: expected '=', ',', ';', 'asm' or ' attribute ' before 'pc_emlrtRSI' 8 mphmm_getEstimation_data.h:34:エラー:' qc_emlrtRSI ' 9 mphmm_getEstimation_data.c:22: エラー: '='、','、';'、'asm' または'属性' 'xb_emlrtRSI' の前 10 mphmm_getEstimation_data.c:23: エラー: 予期された '='、','、';'、'asm' または '属性' 'nc_emlrtRSI' の前 11 mphmm_getEstimation_data.c:24: エラー: 予期された ' ='、','、';'、'asm' または ' attribute ' が 'oc_emlrtRSI' の前に 12 mphmm_getEstimation_data.c:25: エラー: '='、','、';'、'asm' または ' attribute ' が必要' 'pc_emlrtRSI' の前に 13 mphmm_getEstimation_data.c:26: エラー: '='、','、';'、'asm' または '属性' が 'qc_emlrtRSI' の前にあると予想されます 14 gmake:* [mphmm_getEstimation_data.o]
誰かがエラーを解決する方法を教えていただければ幸いです。コードファイルを提供する必要がある場合はお知らせください。申し訳ありませんが、私はこれについて専門家ではありません。
matlab - 単精度でDouble-の代わりにMatlabmex-Algorithmを実行します
現在倍精度を使用しているMatlabCコード(mexファイル)が機能しています。したがって、私は置き換えました
double *datOut = mxGetPr(mxOut)
によってfloat *datOut = (float*)mxGetData(mxOut);
、
mxCreateDoubleMatrix
にmxCreateNumericArray()
と
double
による変数のデータ型float
。使用されている他のmex-Functionは、他にはありmxDuplicateArray()
ません。この呼び出しには何も変更しませんでした...これで、コードが実行され、終了することはありません。私はそれをかなり取り除いたので、誰かが私を助けることができるほど短いことを願っています:
どういうわけか、それは無限ループであり、を介して定義された精度はdiff
、与えられた関数に対して簡単に到達できるはずなので、なぜかわかりませんmyFunc()
。double *datOut = mxGetPr(mxOut)
関数との両方で倍精度を使用すると、同じコードが正常に実行されmxCreateDoubleMatrix
ます。また、を介してポイントを明示的に渡すことにより、mex-Functionを呼び出そうとしましたpoint = zeros(rows, 1, 'single');
。
私を正しい方向に向けたり、それについてのヒントを与えてくれてありがとう。ありがとう!
c++ - c++スタティックライブラリをmexとリンクする際の問題
mex ファイルで c++ スタティック ライブラリを使用しようとしていますが、リンクできません。
これは、mex しようとしている cpp ファイルのソースです。
これは、私の「ライブラリ」のヘッダー ファイルとソース コードです。
ライブラリの名前は testsymcpp.lib です
これは私が使用している mex コマンドです:
そして、これは出力です:
c - 「アサーションが検出されました」エラーを引き起こす MexFile - memcpy に問題がありますか?
この問題は残念ながら狭いですが、途方に暮れています。
それぞれが並べ替えられ、共通のエントリを含まない uint32 の 2 つのリストを取得し、両方のリストのすべてのエントリを含む単一の並べ替えられたリストを返すカスタム mex ファイルがあります。コードは次のとおりです。
mex ファイルを呼び出すコードを実行すると、アサーション検出エラーが発生します (テーブル 5 の壊れたブロック 381 が見つかりました。 (無効なテーブル インデックス) など)。アサーションは常に発生しますが、必ずしも同じ場所ではありません。
古いバージョンのコードに戻せば、問題はありません。何かがメモリを壊していますが、私には見えません。私が行った変更の 1 つは memcpy を使用することですが、そこには何も問題はありません。
繰り返しますが、これは非常に狭い質問で申し訳ありませんが、助けていただければ幸いです。
更新: アサーションを引き起こしているのは間違いなく memcpy です。ループで値の割り当てに戻ると、アサーションが停止します。mex ファイルで memcpy を使用する際に制限はありますか?
matlab - mex と Windows で使用するコンパイラ
Windows で mex を使用していくつかの cpp ファイルをコンパイルしたい (特に -このリンク)。どのコンパイラをダウンロードすればよいですか?
c - MatlabのCMEXファイルをコンパイルするときのsize_tとmwSizeの違い
私は現在、32ビットMatlab用のいくつかのCMEXファイルを64ビットMatlabに移植する作業を行っています。
そうしている間に、私は2つのタイプに遭遇しました。1つはMatlabの人々からのもので、もう1つはC標準です。
これは、Matlabのドキュメントが言っていることmwSize
です:
mwSize
(CおよびFortran)サイズ値の入力
説明
mwSize
配列の次元などのサイズ値を表すタイプです。クロスプラットフォームの柔軟性のためにこの関数を使用してください。デフォルトでmwSize
は、はCと同等です。スイッチint
を使用する場合は、Cと同等です。Fortranでは、プラットフォームとコンパイルフラグに基づいて、またはと同等になります。mex -largeArrayDims
mwSize
size_t
mwSize
INTEGER*4
INTEGER*8
これはウィキペディアが言っていることですsize_t
:
size_t
は、。[1]で定義されているいくつかのC / C ++標準(C99 ISO / IEC 9899標準など)で定義されている符号なしデータ型です。このファイルの内部には[2]が含まれているためstddef.h
、含めることでさらにインポートできます。stdlib.h
stddef.h
このタイプは、オブジェクトのサイズを表すために使用されます。サイズを取得または返すライブラリ関数は、サイズがこのタイプであるか、戻りタイプが。であることを想定しています
size_t
。さらに、最も頻繁に使用されるコンパイラベースの演算子sizeof
は、と互換性のある値に評価する必要がありますsize_t
。実際のタイプ
size_t
はプラットフォームに依存します。size_t
よくある間違いは、と同じであると想定することですunsigned int
。これは、たとえば32ビットアーキテクチャから64ビットアーキテクチャに移行するときに、プログラミングエラー[3][4]につながる可能性があります。
私が見る限り、これらのタイプは実際には同じです。私の質問は次のとおりです。
- 彼らは?
- もしそうなら、どちらを使用するのがより良いプログラミングの好みと見なされますか?理想的には、コードが将来のMatlabリリースとも互換性があることを望んでいます。答えは
mwSize
だと思いますが、よくわかりません。
編集:Matlabの人々が両方を使用していることを追加する必要があります。例えば:
mxArrayの列数を取得する関数です。ただし、行列を作成するときは、
ここで、入力は明らかにmwSizeである必要があります。
matlab - Mexファイルを書き込むときのエラーメッセージ、関数からの配列出力に問題がありますか?
私はMatlabプログラマーであり、Cを何年も使用していません。ここで、Cでコードを記述し、MatlabからmexFunctionコマンドを介して呼び出す必要があります。ここまでは順調ですね。しかし、私のコードでは、引数と戻り値の両方が配列である多くの関数呼び出しが必要です。このために私はポインタリターンを使用しています。しかし、私は約100万の問題に遭遇しました。ある問題が修正されると、別の問題が発生します。
ソートコードの例は次のとおりです(実際のコードは大規模です)
それをhelp_file.cとして保存し、MATLABワークスペースから次のようにコンパイルします。
次のエラーが発生します:
最初にvdummyの代わりにSim[i]を渡そうとしましたが、それは機能しませんでした。そのため、最初にダミー変数を定義しました。
これは些細な問題だと思いますが、それでも人々の助けをいただければ幸いです。
c - Matlab によるマルチスレッド
私は、パフォーマンスを最適化する必要がある Matlab のプロジェクトに取り組んでおり、.m ファイルから作成されたいくつかの関数呼び出しを並列化することを考えていました。
アイデアは単純で、Matlab ファイル (.m) から MEX としてコンパイルされた C ファイルを呼び出し、その C ファイルからいくつかのスレッドを作成し、各スレッドから matlab 関数をコールバックします。
理論は機能し、スレッドを作成でき、matlab 関数を呼び出すこともできます。問題は、スレッドから matlab 関数を呼び出すことができないことです。
matlab を使用する場合、そのオプションに制限はありますか? 誰かがこのようなことを試しましたか?
編集: Parallel Toolbox を必要としないオプションはありますか?
python - Matlab MEX ファイルの関数を Python に直接埋め込む
独自の Matlab MEX ファイルを使用して、いくつかのシミュレーション結果を Matlab にインポートしています (もちろんソース コードはありません!)。Matlab とのインターフェイスは、Matlab 構造体を返す単一の関数があるため、実際には非常に単純です。Matlab を使用せずに、Python から直接 MEX ファイルでこの関数を呼び出す方法があるかどうかを知りたいですか?
私が念頭に置いているのは、たとえば SWIG のようなものを使用して、C 関数を Python にインポートし、その周りにカスタム Matlab-wrapper を提供することです...ちなみに、scipy.io.loadmat を使用すると、既に読み取りが可能であることを知っていますMatlab バイナリ *.mat データ ファイルですが、mat ファイルのデータ表現が Matlab の内部表現と同じかどうかはわかりません (その場合、MEX ラッパーに役立つ可能性があります)。
もちろん、システムに Matlab がインストールされていなくても、MEX で提供される関数を使用できるようにすることが考えられます。
ありがとう。
c++ - 私のC++コードの中間結果をプロットするための最良のツールは何ですか?
私は組み込みシステム用のアルゴリズムを開発し、それらをC++コードで実装しています。ターゲットでc++コードをテストする前に、PCでアルゴリズムをテストして、数学が正しいことを確認する必要があります。これを行うには、Matlabで出力を確認できるようにmexファイルを作成します。
mexファイルを使用するシステムは正常に機能しますが、アルゴリズムの迅速なテストを目的とする場合、実装は非常に面倒です。それで、誰かがc / c ++コードをプロットするための別のツールの推奨事項を持っていますか?このサイトでgnuplotとQWTについて読んだことがありますが、mexファイルよりも設定が簡単かどうかを確認するのに十分なgnuplotの把握ができていません。