exponenta event banner

mxGetProperty (C и Fortran)

Значение публичного свойства объекта 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 для получения значения, удерживаемого в указанном элементе. В псевдо-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

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

Открыть и построить mxgetproperty.c MEX-файл в matlabroot/extern/examples/mex папка.

Ограничения

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

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

Представлен в R2008a