Main Content

mxSetIr (C および Fortran)

スパース配列の配列 IR

C 構文

#include "matrix.h"
void mxSetIr(mxArray *pm, mwIndex *ir);

Fortran 構文

#include "fintrf.h"
subroutine mxSetIr(pm, ir)
mwPointer pm, ir

引数

pm

スパース mxArray へのポインター

ir

配列 ir へのポインター。配列 ir は、列優先の順序で並べ替えなければなりません。

説明

mxSetIr を使用して、スパース mxArray の配列 ir を指定します。配列 ir は整数の配列です。配列 ir の長さは nzmax (スパース配列に割り当てられたストレージ) または nnz (非ゼロの行列要素の数) の値と同じです。

配列 ir 内の各要素は、非ゼロ要素を含む行 (1 によりオフセット) を示します (配列 jc は、非ゼロ要素を含む列を間接的に指定するインデックスです。jc の詳細については、mxSetJc を参照してください。)

たとえば、以下のように入力して、6 つの非ゼロ要素を含む Sparrow という名前の 73 列のスパース mxArray を作成するとします。

Sparrow = zeros(7,3);
Sparrow(2,1) = 1;
Sparrow(5,1) = 1;
Sparrow(3,2) = 1;
Sparrow(2,3) = 2;
Sparrow(5,3) = 1;
Sparrow(6,3) = 1;
Sparrow = sparse(Sparrow);

配列 pr は、スパース行列の実数データを格納し、Sparrow では 5 つの 1 と 1 つの 2 を含みます。非ゼロの虚数データが存在する場合、それは配列 pi 内に含まれます。

添字

ir

pr

jc

コメント

(2,1)110

列 1。行は 2 なので ir は 1 です。

(5,1)412

列 1。行は 5 なので ir は 4 です。

(3,2)213

列 2。行は 2 なので ir は 2 です。

(2,3)126

列 3。行は 2 なので ir は 1 です。

(5,3)41 

列 3。行は 5 なので ir は 4 です。

(6,3)51 

列 3。行は 6 なので ir は 5 です。

配列 ir の各要素は、対応する非ゼロ要素の行より常に 1 だけ少なくなっていることに注目してください。たとえば、最初の非ゼロ要素は行 2 にあるため、ir の最初の要素は 1 (つまり 2 – 1) です。2 番目の非ゼロ要素は行 5 にあるため、ir の 2 番目の要素は 4 (5 – 1) です。

配列 ir は、列優先の順序でなければなりません。配列 ir は最初に列 1 (存在する場合) の行の位置を定義してから、列 2 (存在する場合) の行の位置を定義し、続けて列 N まで定義していきます。各列内では、行位置 1 は行位置 2 の前に表示されなければなりません (以下同様)。

mxSetIr では配列 ir を自動的に並べ替えません。したがって、既に並べ替えられている配列 ir を指定しなければなりません。

この関数は、置き換える既存のデータに割り当てられているメモリは解放しません。既存のメモリを解放するには、mxSetIr を呼び出す前に、mxGetIr の返すポインターにある mxFree を呼び出します。

matlabroot/extern/examples/mx の次の例を参照してください。

matlabroot/extern/examples/mex の次の例を参照してください。

バージョン履歴

R2006a より前に導入