Значение общественной собственности объекта MATLAB
#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
не поддерживаются.