3

スパース行列を MATLAB から共有ライブラリに渡し、そこで何らかの操作 (C で記述) を実行してから返したいと考えています。

密な行列を渡して使用することができます。かなり簡単です。しかし、スパース行列を MATLAB から共有ライブラリに渡す方法がわかりません。私が見つけたのは、すべて MEX に関するものです。

MATLAB での疎行列形式と C での変換に関する情報を提供していただければ幸いです。

前もって感謝します。

4

1 に答える 1

2

内部的に、MATLAB はCompressed sparse column (CSC) 形式を使用してスパース行列を保存します。形式を理解したら、配列prpiir、およびjc(それぞれ MEX 関数mxGetPrmxGetPimxGetIrmxGetJcを使用して) を取得することにより、スパース行列を外部コードに渡すことができます。

  • pr(および行列が複素数の場合) は、行列の非ゼロ値を含むpi長さの倍精度配列です。nzmax

  • irnzmaxの対応する要素の行インデックスを含む長さの整数配列を指します。prpi

  • jclength の整数配列を指します。n+1ここnで、 は疎行列の列数です。配列には、jc列インデックス情報が含まれています。jスパース行列の- 番目の列にゼロ以外の要素がある場合、jc[j]irand pr(存在する場合) のインデックスで、 - 番目の列piの最初の非ゼロ要素のインデックスであり、 はその列の最後の非ゼロ要素のインデックスです。疎行列の - 番目の列について、は先行するすべての列の非ゼロ要素の総数です。配列の最後の要素 は、スパース行列全体の非ゼロ要素の数 に等しくなります。jjc[j+1] - 1jjc[j]jcjc[n]nnz

于 2013-12-13T08:37:24.857 に答える