[英]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.