疎行列の書き込み (Scilab ゲートウェイ) ゲートウェイで疎行列を書き込む方法.
既存のデータから作成.

## 呼び出し手順

入力引数プロファイル:

    SciErr createSparseMatrix(void* _pvCtx, int _iVar, int _iRows, int _iCols, int _iNbItem, const int* _piNbItemRow, const int* _piColPos, const double* _pdblReal)

    SciErr createComplexSparseMatrix(void* _pvCtx, int _iVar, int _iRows, int _iCols, int _iNbItem, const int* _piNbItemRow, const int* _piColPos, const double* _pdblReal, const double* _pdblImg)

名前指定変数プロファイル:

    SciErr createNamedSparseMatrix(void* _pvCtx, const char* _pstName, int _iRows, int _iCols, int _iNbItem, const int* _piNbItemRow, const int* _piColPos, const double* _pdblReal)

    SciErr createNamedComplexSparseMatrix(void* _pvCtx, const char* _pstName, int _iRows, int _iCols, int _iNbItem, const int* _piNbItemRow, const int* _piColPos, const double* _pdblReal, const double* _pdblImg)

## 引数

_pvCtx

  Scilab環境ポインタ, api_scilab.h により定義された "pvApiCtx"で指定.

_iVar

  変数を保存するScilabメモリの位置.

_pstName

  "名前指定"関数の場合の変数名.

_iRows

  新規変数の行数.

_iCols

  新規変数の列数.

_iNbItem

  疎行列の非ゼロ要素の要素.

_piNbItemRow

  各行の要素数 (大きさ: _iRows).

_piColPos

  各要素の列方向の位置 (大きさ: _iNbItem).

_pdblReal

  実部データ配列のアドレス (大きさ: _iNbItem).

_pdblImg

  虚部データ配列のアドレス (大きさ: _iNbItem).

  この引数は createSparseMatrix および createNamedSparseMatrixには存在しません.

SciErr

  エラー構造体で,エラーメッセージ履歴と最初のエラー番号を格納します.

Scilabメモリに直接書き込む.

## 呼び出し手順

入力引数プロファイル:

    SciErr allocSparseMatrix(void* _pvCtx, int _iVar, int _iRows, int _iCols, int _iNbItem, int** _piNbItemRow, int** _piColPos, double** _pdblReal)

    SciErr allocComplexSparseMatrix(void* _pvCtx, int _iVar, int _iRows, int _iCols, int _iNbItem, int** _piNbItemRow, int** _piColPos, double** _pdblReal, double** _pdblImg)

## 引数

_pvCtx

  Scilab環境ポインタ, api_scilab.h により定義された "pvApiCtx"で指定.

_iVar

  変数を保存するScilabメモリの位置.

_iRows

  新規変数の行数.

_iCols

  新規変数の列数.

_iNbItem

  疎行列の非ゼロ要素の数.

_piNbItemRow

  返される各行の要素数のアドレス (大きさ: _iRows).

_piColPos

  返される各要素の列方向のアドレス (大きさ: _iNbItem).

_pdblReal

  実部データ配列のアドレス (大きさ: _iNbItem).

_pdblImg

  虚部データ配列のアドレス (大きさ: _iNbItem).

  この引数は allocSparseMatrixには存在しません.

SciErr

  エラー構造体で,エラーメッセージ履歴と最初のエラー番号を格納します.

## 説明

このヘルプは疎行列を追加する方法を示します.

Scilabメモリに書き込む際には,2種類の関数を使用可能です.

## ゲートウェイのソース

    #include "api_scilab.h"
    int write_sparse(char *fname,void* pvApiCtx)
    {
    	SciErr sciErr;
    	int piNbItemRow[]	= {1,2,1};
    	int piColPos[]		= {8,4,7,2};
    	double pdblSReal[]	= {1,2,3,4};
    	double pdblSImg[]	= {4,3,2,1};
    	int iNbItem			= 4;
    	sciErr = createComplexSparseMatrix(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 3, 10, iNbItem, piNbItemRow, piColPos, pdblSReal, pdblSImg);
    	if(sciErr.iErr)
    	{
    		printError(&sciErr, 0);
    		return 0;
    	}
    	AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
    	return 0;
    }

## Scilab テストスクリプト

    sp_ref = sparse([1,8;2,4;2,7;3,2],[1+4*%i,2+3*%i,3+2*%i,4+%i], [3,10]);
    sp = write_sparse();
    if or(sp <> sp_ref) then error("failed"), end