Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 提示用户在MEX代码中输入数字_C_Matlab_Mex - Fatal编程技术网

C 提示用户在MEX代码中输入数字

C 提示用户在MEX代码中输入数字,c,matlab,mex,C,Matlab,Mex,我想知道是否有提示用户在MEX代码中输入整数的方法 类似于MATLAB中的输入或C中的scanf 我听说了mexCallMATLAB及其在 str = mxCreateString("Enter extension: "); mexCallMATLAB(1,&new_number,1,&str,"input"); 然而,我并不真正理解mxCreateString的意义是什么,以及&str的作用是什么。如果有人能详细介绍一下,或者给我一个提示用户输入数据的技巧,我将不

我想知道是否有提示用户在MEX代码中输入整数的方法

类似于MATLAB中的输入或C中的scanf

我听说了mexCallMATLAB及其在

 str = mxCreateString("Enter extension:  ");

   mexCallMATLAB(1,&new_number,1,&str,"input");

然而,我并不真正理解mxCreateString的意义是什么,以及&str的作用是什么。如果有人能详细介绍一下,或者给我一个提示用户输入数据的技巧,我将不胜感激。

让我们从头开始。在MEX代码中调用MATLAB函数、用户定义的MATLAB函数或MEX文件。函数声明如下所示:

int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], 
                  const char *functionName);
具体参数如下:

nlhs:MATLAB或MEX函数预期产生的输出参数总数。 *plhs[]:指针数组,其中每个元素都是指向输出参数的指针 nrhs:MATLAB或MEX函数预期接收的输入参数总数。 *prhs[]:指针数组,其中每个元素都是指向输入参数的指针。 functionName:包含函数名的C字符串。 请注意,*plhs[]和*prhs[]必须是指向MEX类型变量的指针数组。这一点很重要,因为这将用于了解接下来将发生什么。使用上述逻辑,查看您引用的对mexCallMATLAB的调用:

mexCallMATLAB(1,&new_number,1,&str,"input");
我们可以看到,在MATLAB中调用的函数是输入函数,这是一个MATLAB函数,其中输入参数是字符串提示符,用于在从用户接收输入并将其存储到输出变量之前在命令窗口中显示。请注意,所期望的是一个数值表达式,通常是一个数字或对数字的某些运算

示例调用如下所示:

out = input('Enter a number: ');
输入一个数字:将显示在命令窗口中,您键入的任何数字都将存储到变量out中

当使用mexCallMATLAB时,您正在执行与上述等效的操作,但在MEX代码中调用此操作。此函数中有一个输入参数和一个预期的输出参数。从技术上讲,第二个参数是一个指向输出参数的指针,其中该参数将是一个仅包含一个元素的数组。因此,输入的输出将存储在变量new_number中,该变量将包含一个数字。str变量是使用mxCreateString创建的MEX字符串。您必须创建一个MEX字符串,因为要通过mexCallMATLAB调用的函数的输入变量的预期输入必须是MEX变量。因此,str是一个MEX字符串,&str将是指向MEX字符串的指针。从技术上讲,这也是一个包含一个元素的指针数组

调用此函数后,将一个输入编号输入MATLAB命令窗口,然后将该编号发送回MEX,并存储到MEX代码中的新编号中


这似乎是一种将变量从MATLAB命令窗口输入MEX的优雅方式。从我在MEX体验中看到的情况来看,我还没有遇到任何其他方法,所以请继续使用它

让我们从头开始。在MEX代码中调用MATLAB函数、用户定义的MATLAB函数或MEX文件。函数声明如下所示:

int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], 
                  const char *functionName);
具体参数如下:

nlhs:MATLAB或MEX函数预期产生的输出参数总数。 *plhs[]:指针数组,其中每个元素都是指向输出参数的指针 nrhs:MATLAB或MEX函数预期接收的输入参数总数。 *prhs[]:指针数组,其中每个元素都是指向输入参数的指针。 functionName:包含函数名的C字符串。 请注意,*plhs[]和*prhs[]必须是指向MEX类型变量的指针数组。这一点很重要,因为这将用于了解接下来将发生什么。使用上述逻辑,查看您引用的对mexCallMATLAB的调用:

mexCallMATLAB(1,&new_number,1,&str,"input");
我们可以看到,在MATLAB中调用的函数是输入函数,这是一个MATLAB函数,其中输入参数是字符串提示符,用于在从用户接收输入并将其存储到输出变量之前在命令窗口中显示。请注意,所期望的是一个数值表达式,通常是一个数字或对数字的某些运算

示例调用如下所示:

out = input('Enter a number: ');
输入一个数字:将显示在命令窗口中,您键入的任何数字都将存储到变量out中

当使用mexCallMATLAB时,您正在执行与上述等效的操作,但在MEX代码中调用此操作。此函数中有一个输入参数和一个预期的输出参数。从技术上讲,第二个参数是一个指向输出参数的指针,其中该参数将是一个仅包含一个元素的数组。因此,输入的输出将存储在变量new_number中,该变量将包含一个数字。 str变量是使用mxCreateString创建的MEX字符串。您必须创建一个MEX字符串,因为要通过mexCallMATLAB调用的函数的输入变量的预期输入必须是MEX变量。因此,str是一个MEX字符串,&str将是指向MEX字符串的指针。从技术上讲,这也是一个包含一个元素的指针数组

调用此函数后,将一个输入编号输入MATLAB命令窗口,然后将该编号发送回MEX,并存储到MEX代码中的新编号中

这似乎是一种将变量从MATLAB命令窗口输入MEX的优雅方式。从我在MEX体验中看到的情况来看,我还没有遇到任何其他方法,所以请继续使用它