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