Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Scilab 6.0.0
Change language to: English - Français - Português - Русский

Please note that the recommended version of Scilab is 6.0.2. This page might be outdated.
See the recommended documentation of this function

Scilabヘルプ >> API Scilab > legacy > Low level functions > 疎行列の書き込み (Scilab ゲートウェイ)

疎行列の書き込み (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
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:10:43 CET 2017