mxArrayとmwArrayの違い
1917 ワード
まず、mxArrayはMatlabC関数ライブラリの構造体であり、mwArrayはMatlab C++関数ライブラリにおけるmxArrayのパッケージである
クラス.
次に,両者のメモリ管理方式が異なる.mxArrayのメモリ管理方式は比較的緩やかで、C関数ライブラリなのでデータがありません
パッケージは、一時的なアレイと制約アレイの概念を極めて明確にし、メモリの漏洩を注意深く防止する必要があります(多くの世代を書く必要があります).
コード).自動メモリ管理メカニズム(mlfEnterNewContext,mlfReleasePreviousContext)があるにもかかわらず、どこでも必要です.
mlfAssignを呼び出すのは面倒です.しかしmwArrayは多くて、すべてC++の対象に任せて、あなたは安心して使うだけです
それでいいです.ただし、Matlab C++関数ライブラリは、頻繁なメモリ割り当てや解放を防ぐためにメモリ割り当てや解放などの関数を書き換えています.
mwArray a,bについてa=b;実際には2つの同じデータブロックは生成されず、ポインタだけで、データ変更に送信するしかありません.
copyの完全なデータが変更されます.
再び、この2つのものにはそれぞれ対応する関数があります.関数の戻り値のタイプが異なるので注意が必要です.
最後に、mxArrayはポインタを使用し、mwArrayは直接クラスオブジェクトとして使用します.もしあなたがHardcore級の牛人でなければ
あるいはHardcore傾向のある潜牛人は、後者を強くお勧めします!mwArrayはプログラム言語のint,floatなどの基本的なタイプに似ており,具体的に使用する過程であなたが望むタイプに変換することができる.オブジェクト向けプログラミングの観点から見ると、mwArrayは実はすべてのデータ型のベースクラスであり、MFCの
Objectオブジェクト.Matlabの開発では、すべてのデータオブジェクトをmwArrayとして扱い、関数の戻り値も
mwArrayタイプまたはmwArray配列が戻り、二次開発では必要に応じて必要なデータ型に変換すれば良いのですが、
私は普通mwArrayを先にstringに変えて、それからstringを数値に解析します!
mwArrayはオブジェクト向け言語のobjectクラスのような感じがします.だからこそmatlabの変数や一般的なプログラミング言語は
同じように、int、floatなどを区別しません.C#を熟知すれば、この推定はもっと深く理解できる.matlabのやり方で、
mwarrayはその基本的なデータ型で、単一の変数と配列はすべて適用して、具体的に必要な時に相応のデータに変換することができます
を選択します.詳細はmatlabのヘルプファイルを調べることができ、比較的詳細な説明があります.
宣言
mxArray:
mxArray *a;
mwArray:
mwArray a;
破棄
mxArray
mxDestroyArray a;
mwArray
mwArrayクラスの構造関数によるオブジェクトの自動破棄
へんすうわりあて
mxArray
memcpy(dest_ptr,source_ptr,MAX_SIZE);
mwArray
クラス.
次に,両者のメモリ管理方式が異なる.mxArrayのメモリ管理方式は比較的緩やかで、C関数ライブラリなのでデータがありません
パッケージは、一時的なアレイと制約アレイの概念を極めて明確にし、メモリの漏洩を注意深く防止する必要があります(多くの世代を書く必要があります).
コード).自動メモリ管理メカニズム(mlfEnterNewContext,mlfReleasePreviousContext)があるにもかかわらず、どこでも必要です.
mlfAssignを呼び出すのは面倒です.しかしmwArrayは多くて、すべてC++の対象に任せて、あなたは安心して使うだけです
それでいいです.ただし、Matlab C++関数ライブラリは、頻繁なメモリ割り当てや解放を防ぐためにメモリ割り当てや解放などの関数を書き換えています.
mwArray a,bについてa=b;実際には2つの同じデータブロックは生成されず、ポインタだけで、データ変更に送信するしかありません.
copyの完全なデータが変更されます.
再び、この2つのものにはそれぞれ対応する関数があります.関数の戻り値のタイプが異なるので注意が必要です.
最後に、mxArrayはポインタを使用し、mwArrayは直接クラスオブジェクトとして使用します.もしあなたがHardcore級の牛人でなければ
あるいはHardcore傾向のある潜牛人は、後者を強くお勧めします!mwArrayはプログラム言語のint,floatなどの基本的なタイプに似ており,具体的に使用する過程であなたが望むタイプに変換することができる.オブジェクト向けプログラミングの観点から見ると、mwArrayは実はすべてのデータ型のベースクラスであり、MFCの
Objectオブジェクト.Matlabの開発では、すべてのデータオブジェクトをmwArrayとして扱い、関数の戻り値も
mwArrayタイプまたはmwArray配列が戻り、二次開発では必要に応じて必要なデータ型に変換すれば良いのですが、
私は普通mwArrayを先にstringに変えて、それからstringを数値に解析します!
mwArrayはオブジェクト向け言語のobjectクラスのような感じがします.だからこそmatlabの変数や一般的なプログラミング言語は
同じように、int、floatなどを区別しません.C#を熟知すれば、この推定はもっと深く理解できる.matlabのやり方で、
mwarrayはその基本的なデータ型で、単一の変数と配列はすべて適用して、具体的に必要な時に相応のデータに変換することができます
を選択します.詳細はmatlabのヘルプファイルを調べることができ、比較的詳細な説明があります.
宣言
mxArray:
mxArray *a;
mwArray:
mwArray a;
破棄
mxArray
mxDestroyArray a;
mwArray
mwArrayクラスの構造関数によるオブジェクトの自動破棄
へんすうわりあて
mxArray
memcpy(dest_ptr,source_ptr,MAX_SIZE);
mwArray
mwArray in1(3, 3, mxDOUBLE_CLASS, mxREAL);
mwArray in2(3, 3, mxDOUBLE_CLASS, mxREAL);
in1.SetData(data, 9);
in2.SetData(data, 9);