我知道如何使用double类型的一个输出编写基本的C Mex函数.我尝试用两个输出写一个C Mex,但是我遇到了分段违规错误.第一个输出是double,第二个是整数.这是我尝试分配输出指针的代码:
plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); //works fine
plhs[1] = mxCreateNumericArray(1, 1, mxINT32_CLASS, mxREAL); //causes segmentation violation
Run Code Online (Sandbox Code Playgroud)
我搜索了互联网,但几乎所有的例子都只有一个输出或相同类型的输出.应该怎么做才能得到两个输出,一个是double类型,另一个是整数类型?
首先,您正在错误地调用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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2398 次 |
| 最近记录: |