Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.0.0 - 日本語


変数の次元を確認 (Scilabゲートウェイ)

変数の次元を調べる C ゲートウェイ関数.

呼び出し手順

int checkVarDimension(void* _pvCtx, int* _piAddress, int _iRows, int _iCols)
int isRowVector(void* _pvCtx, int* _piAddress)
int isColumnVector(void* _pvCtx, int* _piAddress)
int isVector(void* _pvCtx, int* _piAddress)
int isScalar(void* _pvCtx, int* _piAddress)
int isSquareMatrix(void* _pvCtx, int* _piAddress)
int isEmptyMatrix(void* _pvCtx, int* _piAddress)

引数

_pvCtx

Scilab環境ポインタ, api_scilab.hで定義される "pvApiCtx" を指定

_piAddress

Scilab変数のアドレス.

_iRows

予定する行数

_iCols

予定する列数

説明

変数の次元を調べるCゲートウェイ関数.

この例では, Cインターフェイス関数は複数の入力引数をとり, 入力の次元と複数のテスト結果を出力します.

#include "api_scilab.h"
#include "sciprint.h"
int check_matrix_dimension(char * fname)
{
    SciErr sciErr;
    int* piAddr = NULL;
    int iRows = 0;
    int iCols = 0;
    CheckInputArgument(pvApiCtx, 1, 1);
    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
    if(sciErr.iErr)
    {
        printError(&sciErr, 0);
        return 1;
    }
    sciErr = getVarDimension(pvApiCtx, piAddr, &iRows, &iCols);
    if(sciErr.iErr)
    {
        printError(&sciErr, 0);
        return 1;
    }
    if(checkVarDimension(pvApiCtx, piAddr, iCols, iRows))
    {
        sciprint("checkVarDimension returns false\n");
    }
    else
    {
        sciprint("checkVarDimension returns true\n");
    }
    if(isRowVector(pvApiCtx, piAddr))
    {
        sciprint("isRowVector\n");
    }
    if(isColumnVector(pvApiCtx, piAddr))
    {
        sciprint("isColumnVector\n");
    }
    if(isVector(pvApiCtx, piAddr))
    {
        sciprint("isVector\n");
    }
    if(isScalar(pvApiCtx, piAddr))
    {
        sciprint("isScalar\n");
    }
    if(isSquareMatrix(pvApiCtx, piAddr))
    {
        sciprint("isSquareMatrix\n");
    }
    if(isEmptyMatrix(pvApiCtx, piAddr))
    {
        sciprint("isEmptyMatrix\n");
    }
    //no return value
    AssignOutputVariable(pvApiCtx, 0) = 1;
    return 0;
}

Scilabテストスクリプト

check_matrix_dimension([1,2,3;4,5,6]);
check_matrix_dimension([1,2,3]);
check_matrix_dimension([1;2;3]);
check_matrix_dimension([1]);
check_matrix_dimension([1,2;3,4]);
check_matrix_dimension([]);

参照

  • sciprint — ユーザに標準メッセージを出力するCゲートウェイ関数 (C printf関数と同じプロファイル)
Report an issue
<< CallOverloadFunction Low level functions CheckInputArgument >>

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 Mar 07 09:29:08 CET 2023