在mex文件中使用MEXCALLMAB执行clear命令时出现Matlab错误

在mex文件中使用MEXCALLMAB执行clear命令时出现Matlab错误,c,matlab,C,Matlab,执行提示出错的代码为: void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]) { double p; p = (double)mxGetScalar(prhs[0]); mexCallMATLAB(0,NULL,1, prhs, "clear"); } 我试图清除prhs[0]指向的工作区中的变量。 请说明我做错了什么 使用一个参数执行此函数时出现错误消息。给出以

执行提示出错的代码为:

 void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
 {
    double p;
    p  =   (double)mxGetScalar(prhs[0]);
    mexCallMATLAB(0,NULL,1, prhs, "clear");

 }
我试图清除prhs[0]指向的工作区中的变量。 请说明我做错了什么

使用一个参数执行此函数时出现错误消息。给出以下错误消息:

callmatlabtest(10) ??? 使用==>清除时出错 参数必须包含字符串


我相信您需要在通话中加入
&prhs[0]

mexCallMATLAB(0, NULL, 1, &prhs[0], "clear"); 
我已经测试了这段代码,它可以正常工作(在一个名为mextest.c的文件中):

结果如下:

>> a = 10;
>> who
Your variables are:
a  
>> mextest('a')
>> who
>> 

Callmatlabtest(10)与clear(10)相同,因为Callmatlabtest只是将自己的输入转发给clear(通过mexCallMATLAB)。clear函数需要一个字符串输入,10是一个双精度值,因此出现错误消息“参数必须包含字符串”。

你说得对,我更改了它。它还是崩溃了!我不知道为什么。代码如下:#include“mex.h”void-mexFunction(int-nlhs,mxArray*plhs[],int-nrhs,const-mxArray*prhs[]){double p=100;prhs[0]=&p;mexCallMATLAB(0,NULL,1,prhs,“clear”)}&prhs[0]和prhs是同一件事,不是?您在上面的评论中的代码与我建议的不一样。您正在代码中创建一个局部变量
p
,并尝试调用
clear
!请参阅下面我的解决方案。上面的代码正在调用
prhs
上的
clear
,这是一个指针数组,而不是指向要清除的变量名称的指针。
>> a = 10;
>> who
Your variables are:
a  
>> mextest('a')
>> who
>>