Main Content

mxGetProperty (C および Fortran)

MATLAB オブジェクトのパブリック プロパティの値

C 構文

#include "matrix.h"
mxArray *mxGetProperty(const mxArray *pa, mwIndex index,
         const char *propname);

Fortran 構文

#include "fintrf.h"
mwPointer mxGetProperty(pa, index, propname)
mwPointer pa
mwIndex index
character*(*) propname

引数

pa

オブジェクトである mxArray へのポインター。

index

オブジェクト配列の目的の要素のインデックス。

C では、mxArray の最初の要素は 0index をもっています。最後の要素の indexN-1 です。ここで、N は配列内の要素の数です。Fortran では、mxArray の最初の要素の index1 です。最後の要素の indexN です。ここで、N は配列内の要素の数です。

propname

抽出する値をもつプロパティの名前。

戻り値

成功した場合、指定された propnamemxArray へのポインター。失敗した場合、C では NULL (Fortran では 0) を返します。よくある失敗の原因には、以下があります。

  • 存在しない propname プロパティを指定している。

  • パブリックでない propname を指定している。

  • indexmxArray の範囲外の要素に指定している。インデックス値をテストするには、mxGetNumberOfElements を使用するか、mxGetM および mxGetN を使用します。

  • 不十分なヒープ領域。

説明

mxGetProperty を呼び出して、指定された要素に格納されている値を取得します。疑似 C 用語では、mxGetProperty は以下での値を返します。

pa[index].propname

mxGetProperty は値のコピーを作成します。プロパティが大量のメモリを使用する場合は、コピーの作成が問題になることがあります。値のコピーを格納するための十分なメモリ (ヒープ内) が必要です。

timeseries オブジェクトの名前プロパティの表示

MEX ファイル dispproperty.c を MATLAB® パス上のフォルダーに作成します。

/*=================================================================
 * dispproperty.c - Display timeseries Name property
 * This is a MEX file for MATLAB.
 * Copyright 2013 The MathWorks, Inc.
 * All rights reserved.
 *=================================================================*/
 
#include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, 
                 const mxArray *prhs[])
{
  /* Check for proper number of arguments. */
  if(nrhs!=1) {
    mexErrMsgIdAndTxt( "MATLAB:dispproperty:invalidNumInputs",
            "One input required.");
  } else if(nlhs>1) {
    mexErrMsgIdAndTxt( "MATLAB:dispproperty:maxlhs",
            "Too many output arguments.");
  }
  /* Check for timeseries object. */
  if (!mxIsClass(prhs[0], "timeseries")) {
    mexErrMsgIdAndTxt( "MATLAB:dispproperty:invalidClass",
            "Input must be timeseries object.");
  }
  plhs[0] = mxGetProperty(prhs[0],0,"Name");  
  
}

MEX ファイルをビルドします。

mex('-v','dispproperty.c')

timeseries オブジェクトを作成します。

ts = timeseries(rand(5, 4),'Name','LaunchData');

名前を表示します。

tsname = dispproperty(ts)
tsname =
LaunchData

オブジェクトの色の変更

matlabroot/extern/examples/mex フォルダーの mxgetproperty.c MEX ファイルを開いてビルドします。

制限

  • MATLAB エンジン API でビルドされたアプリケーションなどのスタンドアロン アプリケーションでは、mxGetProperty はサポートされていません。

  • datetime 型のプロパティはサポートされていません。

バージョン履歴

R2008a で導入