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