Scilab 5.5.2
- Scilabヘルプ
- API Scilab
- Low level functions
- AssignOutputVariable
- CallOverloadFunction
- CheckInputArgument
- CheckOutputArgument
- ReturnArguments
- 論理値の読み込み (Scilabゲートウェイ)
- 論理値の書き込み (Scilabゲートウェイ)
- 論理値疎行列の読み込み (Scilabゲートウェイ)
- 論理値の疎行列の書き込み (Scilabゲートウェイ)
- 変数の次元を確認 (Scilabゲートウェイ)
- 変数リファレンス (Scilabゲートウェイ)
- 変数の次元 (Scilabゲートウェイ)
- 変数の型 (Scilabゲートウェイ)
- 複素数変数 (Scilabゲートウェイ)
- 行列型 (Scilab ゲートウェイ)
- deleteNamedVariable
- doubleの読み込み (Scilabゲートウェイ)
- doubleの書き込み (Scilabゲートウェイ)
- getNbInputArgument (Scilabゲートウェイ)
- getNbOutputArgument (Scilabゲートウェイ)
- ハンドルの読み込み (Scilab ゲートウェイ)
- ハンドルの書き込み (Scilab ゲートウェイ)
- 整数の精度 (Scilabゲートウェイ)
- 整数の読み込み (Scilab ゲートウェイ)
- 整数の書き込み (Scilabゲートウェイ)
- nbInputArgument (Scilab ゲートウェイ)
- ポインタの読み込み (Scilabゲートウェイ)
- ポインタの書き込み (Scilabゲートウェイ)
- 多項式の記号変数 (Scilabゲートウェイ)
- 多項式の読み込み (Scilabゲートウェイ)
- 多項式の書き込み (Scilabゲートウェイ)
- 疎行列の読み込み (Scilab ゲートウェイ)
- 疎行列の書き込み (Scilab ゲートウェイ)
- 文字列の読み込み (Scilab ゲートウェイ)
- 文字列の書き込み (Scilab ゲートウェイ)
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
行列型 (Scilab ゲートウェイ)
引数または変数が行列として保存されているかを調べる方法.
呼び出し手順
入力引数プロファイル:
int isVarMatrixType(void* _pvCtx, int* _piAddress)
名前指定変数プロファイル:
int isNamedVarMatrixType(void* _pvCtx, const char *_pstName)
引数
- _pvCtx
Scilab環境ポインタ, api_scilab.hで定義される "pvApiCtx" を指定
- _piAddress
変数のアドレス
- 戻り値
行列として保存されている場合は 1, それ以外は 0.
説明
このヘルプは変数が行列として保存されているかを調べる方法を示します.
いくつかのケース(例: リスト)では, 変数は標準的なScilab行列に保存されません. この関数は両方のケースを処理すつ手段を提供します.
ゲートウェイのソース
#include "api_scilab.h" SciErr printf_info(int _iVar); int common_function(char *fname,unsigned long fname_len) { SciErr sciErr; int i; int *piAddr1 = NULL; int iBool = 0; for(i = 0 ; i < nbInputArgument(pvApiCtx) ; i++) { sciErr = printf_info(i + 1); if(sciErr.iErr) { printError(&sciErr, 0); break; } sciprint("\n\n"); } // trueの場合に1,それ以外は 0 iBool = sciErr.iErr == 0 ? 1 : 0; sciErr = createMatrixOfBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 1, 1, &iBool); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } // 確保された変数を左辺に代入 AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; return 0; } SciErr printf_info(int _iVar) { SciErr sciErr; int* piAddr = NULL; int iType = 0; int iRows = 0; int iCols = 0; int iItem = 0; int iComplex = 0; sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddr); if(sciErr.iErr) { return sciErr; } sciprint("Variable %d information:\n", _iVar); sciErr = getVarType(pvApiCtx, piAddr, &iType); if(sciErr.iErr) { return sciErr; } sciprint("\tType: "); switch(iType) { case sci_matrix : sciprint("double\n"); break; case sci_poly : sciprint("polynomial\n"); break; case sci_boolean : sciprint("boolean\n"); break; case sci_sparse : sciprint("sparse\n"); break; case sci_boolean_sparse : sciprint("boolean_sparse\n"); break; case sci_ints : { char pstSigned[] = "signed"; char pstUnsigned[] = "unsigned"; char* pstSign = pstSigned; int iPrec = 0; sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddr, &iPrec); if(sciErr.iErr) { return sciErr; } if(iPrec > 10) { pstSign = pstUnsigned; } sciprint("%s integer %d bits\n", pstSign, (iPrec % 10) * 8); } break; case sci_strings : sciprint("strings\n"); break; case sci_list : sciprint("list\n"); break; case sci_tlist : sciprint("tlist\n"); break; case sci_mlist : sciprint("mlist\n"); break; default : sciprint("Not manage by this function\n"); return sciErr; } if(isVarComplex(pvApiCtx, piAddr)) { sciprint("\tComplex: Yes\n"); } sciprint("\tDimensions: "); if(isVarMatrixType(pvApiCtx, piAddr)) { sciErr = getVarDimension(pvApiCtx, piAddr, &iRows, &iCols); if(sciErr.iErr) { return sciErr; } sciprint("%d x %d", iRows, iCols); } else { sciErr = getListItemNumber(pvApiCtx, piAddr, &iItem); if(sciErr.iErr) { return sciErr; } sciprint("%d", iItem); } return sciErr; }
Scilabテストスクリプト
Report an issue | ||
<< 複素数変数 (Scilabゲートウェイ) | Low level functions | deleteNamedVariable >> |