簡體   English   中英

如何從Matlab C Mex函數獲得兩個輸出?

[英]How to get two outputs from a Matlab C Mex function?

我知道如何用double類型的一個輸出編寫基本的C Mex函數。 我嘗試編寫具有兩個輸出的C Mex,但是遇到了細分違規錯誤。 第一個輸出為雙精度,第二個為整數。 這是我嘗試分配輸出指針的代碼:

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

我搜索了互聯網,但是幾乎所有示例都只有一個或多個相同類型的輸出。 如何獲得兩個輸出,一個輸出為double類型,另一個輸出為integer類型?

首先,您錯誤地調用了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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM