0

私は現在このコードを使用しています:

assert(isa(values,'double'));
assert(size(values, 1) <= 1000);

値を 1 次元配列にするように matlab コーダーを説得します。最終的な目的は、C# と PInvoke を介してインターフェイスできるようにすることです。これにより、以下を含む C 署名が作成されます。

const real_T values[1000], const int32_T values_size[1]

長さが 1000 未満の 1 次元配列でもこれを使用できるようです。上記を実現するためのより適切な方法はありますか (つまり、値が無制限の長さの 1 次元配列であると主張します)?

PS:

私も使用しました:

assert(all(size(values) == [1 Inf]));

しかし、作成された構造体は非常に複雑なようで (こちらも参照)、C# からデータを取り込む方法がわからないため、今のところこれを棚上げしました。

4

1 に答える 1

1

Matlab コーダーは現在、動的メモリ割り当てをサポートしているようです (2008 年頃に最後に使用したときはそうではありませんでした)。

完全な例: http://www.mathworks.de/products/matlab-coder/examples.html?file=/products/demos/shipping/coder/coderdemo_atoms.html

更新: 動的サイズの配列の場合、Matlab は EMX データ構造を使用します: http://www.mathworks.de/de/help/fixedpoint/ug/c-code-interface-for-unbounded-arrays-and-structure-fields.html

于 2013-02-18T13:28:38.453 に答える