gpt4 book ai didi

c - 如何从 Matlab C Mex 函数获得两个输出?

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:38 26 4
gpt4 key购买 nike

我知道如何编写一个带有 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

我在网上搜索了一下,但几乎所有的示例都只有一个输出或同一类型的输出。应该怎么做才能得到两个输出,一个是 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);
}
}

关于c - 如何从 Matlab C Mex 函数获得两个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com