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

Scilab 5.5.0
Change language to:
English - Français - Português - Русский

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ヘルプ >> API Scilab > Low level functions > 変数の次元を確認 (Scilabゲートウェイ)

変数の次元を確認 (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
<< 論理値の疎行列の書き込み (Scilabゲートウェイ) Low level functions 変数リファレンス (Scilabゲートウェイ) >>

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:
Fri Apr 11 14:19:09 CEST 2014