2015-11-08 31 views
2

我正在寫一個包裝函數使用mex用於調用C函數。一般來說,我使用利用準備在MEX主要網關功能輸出數據

plhs[0] = mxCreateDoubleMatrix(r,c,mxREAL); 

plhs[0] = mxCreateNumericArray(3, dim_array, mxDOUBLE_CLASS, mxREAL); 

用於存儲輸出圖像以創建在主網關功能的輸出矩陣。現在我有一個函數,它只返回長整型值而不是圖像。我如何處理這個輸出?我是否需要爲單個值輸出創建矩陣或者是否有其他函數?

回答

1

這取決於你的意思是「長整數」。按照下表選擇您新創建的陣列的類型(mxClassID)以匹配所需的MATLAB和C類型。騙一點,你可以使用mxClassIDFromClassName來從MATLAB類型的類ID(例如mxClassIDFromClassName('single')選擇mxSINGLE_CLASS

enter image description here

如果你的意思是你想創建一個標量,只需創建一個數組大小1×1與mxCreateNumericMatrix的:

mxCreateNumericMatrix(1, 1, mxClassIDFromClassName('int32'), mxREAL) 

還要注意,有用於創建double標量,mxCreateDoubleScalar一個方便的功能:

mxArray *ps = mxCreateDoubleScalar(initialValue); 

所有mxCreate*函數都列在MathWorks參考頁面Create or Delete Array上。