Значение общественной собственности объекта 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
Откройте и создайте mxgetproperty.c Файл MEX в папка.matlabroot/extern/examples/mex
mxGetProperty не поддерживается для автономных приложений, таких как приложения, созданные с API движка MATLAB.
Свойства типа datetime не поддерживаются.