mxGetProperty (C and 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. The index последнего элемента N-1, где N - количество элементов в массиве. В Фортране первый элемент mxArray имеет index от 1. The 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 не поддерживается для автономных приложений, таких как приложения, созданные с помощью движка MATLAB API.

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

Введенный в R2008a