返回信息流RT.
代码如下,文件名为main.cpp:
#include "stdafx.h"
#include "wave.h"
#include "mex.h"
#define WAVE_IN_START 1
#define WAVE_IN_STOP 2
#define WAVE_GET_DATA 3
#define WAVE_GET_E 4
#define WAVE_GET_Z 5
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *ret = NULL;
int cmd;
int len;
if (nrhs < 1 || nrhs > 5 || !mxIsNumeric(prhs[0]))
{
mexErrMsgTxt("命令格式错误¡");
}
else if (nlhs > 1)
{
mexErrMsgTxt("输出参数数目过多¡");
}
cmd = (int) *mxGetPr(prhs[0]);
switch (cmd)
{
case WAVE_IN_START:
wave_start();
break;
case WAVE_IN_STOP:
wave_stop();
break;
case WAVE_GET_DATA:
len = wave_get_len();
if (len == 0)
{
mexWarnMsgTxt("len = 0");
break;
}
plhs[0] = mxCreateDoubleMatrix(len, 1, mxREAL);
ret = mxGetPr(plhs[0]);
wave_get_data(ret);
break;
case WAVE_GET_Z:
len = wave_get_frames();
if (len == 0)
{
break;
}
plhs[0] = mxCreateDoubleMatrix(len, 1, mxREAL);
ret = mxGetPr(plhs[0]);
wave_get_zcr(ret);
break;
case WAVE_GET_E:
len = wave_get_frames();
if (len == 0)
{
break;
}
plhs[0] = mxCreateDoubleMatrix(len, 1, mxREAL);
ret = mxGetPr(plhs[0]);
wave_get_energy(ret);
break;
default:
break;
}
}
问题是,用VC编译好了MatWave.dll之后,在matlab命令行里输入
x = MatWave(3);
此时会报错:??? one or more output argumens not assigned during call to "MatWave".
但是在命令行里输入:
MatWave(3);
就通过了。
我找了好久,也看不出门道。
各位大大帮忙看下吧,有点着急@@。
拜谢。
这是一条镜像帖。来源:北邮人论坛 / matlab / #4200同步于 2008/9/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
[求助]【求助】关于matlab的mexFunction函数。
Shmily1314
2008/9/23镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复