Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
6.0.0 - English

Change language to:
Français - 日本語 - Português - Русский

Please note that the recommended version of Scilab is 2024.1.0. This page might be outdated.
However, this page did not exist in the previous stable version.

Scilab Help >> API Scilab > legacy > Low level functions > Sparse matrix reading (Scilab gateway)

Sparse matrix reading (Scilab gateway)

How to read sparse matrices in a gateway.


Input argument profile:

SciErr getSparseMatrix(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, int* _piNbItem, int** _piNbItemRow, int** _piColPos, double** _pdblReal)
SciErr getComplexSparseMatrix(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, int* _piNbItem, int** _piNbItemRow, int** _piColPos, double** _pdblReal, double** _pdblImg)

Named variable profile:

SciErr readNamedSparseMatrix(void* _pvCtx, const char* _pstName, int* _piRows, int* _piCols, int* _piNbItem, int* _piNbItemRow, int* _piColPos, double* _pdblReal)
SciErr readNamedComplexSparseMatrix(void* _pvCtx, const char* _pstName, int* _piRows, int* _piCols, int* _piNbItem, int* _piNbItemRow, int* _piColPos, double* _pdblReal, double* _pdblImg)



Scilab environment pointer, pass in "pvApiCtx" provided by api_scilab.h.


Address of the Scilab variable.


Name of the variable for "named" functions.


Return number of rows.


Return number of columns.


Return number of non zero value.


Return number of item in each rows (size: _iRows).


Return column position for each item (size: _iNbItem).


Return address of real data array (size: _iCols * _iRows) For "Named" function, _pdblReal must be allocated before calling function.


Return address of imaginary data array (size: _iCols * _iRows) For "Named" function, _pdblImg must be allocated before calling function.


Error structure where is stored errors messages history and first error number.


This help describes how sparse matrix can be handled through the Scilab API.

Gateway Source

#include "api_scilab.h"
int read_sparse(char *fname,void* pvApiCtx)
	SciErr sciErr;
	int i,j,k;
	int* piAddr			= NULL;
	int iRows			= 0;
	int iCols			= 0;
	int iNbItem			= 0;
	int* piNbItemRow	= NULL;
	int* piColPos		= NULL;
	double* pdblReal	= NULL;
	double* pdblImg		= NULL;

    CheckInputArgument(pvApiCtx, 1, 1);

	sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
		printError(&sciErr, 0);
		return 0;

	if(isVarComplex(pvApiCtx, piAddr))
		sciErr = getComplexSparseMatrix(pvApiCtx, piAddr, &iRows, &iCols, &iNbItem, &piNbItemRow, &piColPos, &pdblReal, &pdblImg);
		sciErr = getSparseMatrix(pvApiCtx, piAddr, &iRows, &iCols, &iNbItem, &piNbItemRow, &piColPos, &pdblReal);

		printError(&sciErr, 0);
		return 0;

	sciprint("Sparse %d item(s)\n", iNbItem);
	k = 0;

	for(i = 0 ; i < iRows ; i++)
		for(j = 0 ; j < piNbItemRow[i] ; j++)
			sciprint("(%d,%d) = %f", i+1, piColPos[k], pdblReal[k]);
			if(isVarComplex(pvApiCtx, piAddr))
				sciprint(" %+fi", pdblImg[k]);


	//assign allocated variables to Lhs position
	AssignOutputVariable(pvApiCtx, 1) = 0;
	return 0;

Scilab test script

sp=sparse([1,2;4,5;3,10],[1 + 2*%i,2 - 3*%i,-3 + 4*%i]);
Report an issue
<< Polynomial writing (Scilab gateway) Low level functions Sparse writing (Scilab gateway) >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:03:09 CET 2017