我有一個從Matlab傳遞給mex的結構。 它正確傳遞,我用mxGetClassName(mxArray_pointer_carrying_struct)驗證它返回結構作爲類的類型。該結構在相應的屬性中包含15個字段,全部30個字符串(15個屬性名稱,15個屬性值)。從mex訪問Matlab結構
我能夠使用mxGetFieldNameByNumber(mxArray_pointer_carrying_struct,index)訪問屬性名稱;
如何訪問屬性值?
我上面做的代碼看起來如下:
extract_settings(const mxArray *p)
{
mwIndex j = 1;
const char *property;
mexPrintf("\nInput Arg %i is of type:%s\n",j,mxGetClassName(p));
for(int i = 0;i<=14;i++)
{
property = mxGetFieldNameByNumber(p, i); %gets property names
mexPrintf("%s-- \n",property); %Displays 15 property names
}
}
我的結構如下看起來:
{
TRIGGER_POLARITY : LEVEL_LOW
EDGE : EDGE_RISING
.
.
. (15 elements as of now)
}
你也可以像你用財產一樣獲得價值。 一旦獲得值的字符串,您可以在打印之前使用atoi()或strtoul()將其轉換爲數值等值(僅限數值)。 – 2013-03-01 05:33:08
你能指定它是哪個mxCommand嗎?由於這些值是字符串,我不需要atoi(); – sridutt 2013-03-01 05:37:08