2011-06-16 143 views
1

我知道如何用一個double類型的輸出來編寫一個基本的C Mex函數。我試圖用兩個輸出寫一個C Mex,但我得到了分割違例錯誤。第一個輸出是一個double,第二個輸出是一個整數。這裏是我嘗試分配輸出指針代碼:如何從Matlab C Mex函數中獲取兩個輸出?

plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); //works fine 
plhs[1] = mxCreateNumericArray(1, 1, mxINT32_CLASS, mxREAL); //causes segmentation violation 

我在網上搜索,但幾乎所有的例子都只有一個輸出或同類型的輸出。應該做些什麼來獲得兩個輸出,一個是double類型的,另一個是整型的?

+0

請發佈一個完整的,最小的例子,並鏈接到兩個mex函數的文檔。 – 2011-06-16 12:52:31

回答

5

首先,你不正確地調用mxCreateNumericArray。你需要這樣做:

#include "mex.h" 

void mexFunction(int nlhs, mxArray * plhs[], 
        int nrhs, const mxArray * prhs[]) { 
    plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); 
    if (nlhs > 1) { 
     mwSize nd = 2; 
     mwSize dims[] = { 3, 4 }; 
     plhs[1] = mxCreateNumericArray(nd, dims, mxINT32_CLASS, mxREAL); 
    } 
}