mxGetProperty (C и Фортран)

Значение общественной собственности объекта MATLAB

Синтаксис C

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

Синтаксис языка ФОРТРАН

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

Аргументы

pa

Указатель на mxArray, который является объектом.

index

Индекс желаемого элемента объектного массива.

В C первый элемент mxArray имеет index 0. index последнего элемента является N-1, где N является числом элементов в массиве. На Фортране первый элемент mxArray имеет index 1. index последнего элемента является N, где N является числом элементов в массиве.

propname

Имя свойства, значение которого вы хотите извлечь.

Возвращается

Указатель на mxArray заданного propname на успехе. Возвращает NULL в C (0 на Фортране), если неудачный. Частые причины отказа включают:

  • Определение несуществующего propname.

  • Определение непубличного propname.

  • Определение index к элементу вне границ mxArray. Чтобы протестировать индексное значение, используйте mxGetNumberOfElements или mxGetM и mxGetN.

  • Недостаточное пространство "кучи".

Описание

Вызовите mxGetProperty, чтобы содержать значение в заданном элементе. В pseudo-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');

DisplayName .

tsname = dispproperty(ts)
tsname =
LaunchData

Изменение цвета объекта

Откройте и создайте файл MEX mxgetproperty.c в папке matlabroot/extern/examples/mex.

Ограничения

  • mxGetProperty не поддержан для автономных приложений, таких как приложения, созданные с API движка MATLAB.

  • Свойства типа datetime не поддержаны.

Введенный в R2008a

Была ли эта тема полезной?