Matlab函数的调用错误求解释

如题所述

  Matlab函数的调用错误求解释
  我转过来的 写的很清楚 你参考下吧,把你的pthis dc等参数对照一下就可以了

  如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数:
  double add(double x, double y) {
  return x + y;
  }
  现在我想要在Matlab中使用它,比如输入:
  >> a = add(1.1, 2.2)
  3.3000
  要得出以上的结果,那应该怎样做呢?
  解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便。MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的。
  可以这样理解,MEX文件实现了一种接口,它把在Matlab中调用函数时输入的自变量通过特定的接口调入了C函数,得出的结果再通过该接口调回Matlab。该特定接口的操作,包含在mexFunction这个函数中,由使用者具体设定。
  所以现在我们要写一个包含add和mexFunction的C文件,Matlab调用函数,把函数中的自变量(如上例中的1.1和2.2)传给mexFunction的一个参数,mexFunction把该值传给add,把得出的结果传回给mexFunction的另一个参数,Matlab通过该参数来给出在Matlab语句中调用函数时的输出值(如上例中的a)。
  比如该C文件已写好,名为add.c。那么在Matlab中,输入:
  >> mex add.c
  就能把add.c编译为MEX文件(编译器的设置使用指令mex -setup),在Windows中,MEX文件类型为mexw32,即现在我们得出add.mexw32文件。现在,我们就可以像调用M函数那样调用MEX文件,如上面说到的例子。所以,通过MEX文件,使用C函数就和使用M函数是一样的了。
  我们现在来说mexFunction怎样写。
  mexFunction的定义为:
  void mexFunction(
  int nlhs,
  mxArray *plhs[],
  int nrhs,
  const mxArray *prhs[]) {

  }
  可以看到,mexFunction是没返回值的,它不是通过返回值把结果传回Matlab的,而是通过对参数plhs的赋值。mexFunction的四个参数皆是说明Matlab调用MEX文件时的具体信息,如这样调用函数时:
  >> b = 1.1; c = 2.2;
  >> a = add(b, c)
  mexFunction四个参数的意思为:
  nlhs = 1,说明调用语句左手面(lhs-left hand side)有一个变量,即a。
  nrhs = 2,说明调用语句右手面(rhs-right hand side)有两个自变量,即b和c。
  plhs是一个数组,其内容为指针,该指针指向数据类型mxArray。因为现在左手面只有一个变量,即该数组只有一个指针,plhs[0]指向的结果会赋值给a。
  prhs和plhs类似,因为右手面有两个自变量,即该数组有两个指针,prhs[0]指向了b,prhs[1]指向了c。要注意prhs是const的指针数组,即不能改变其指向内容。
  因为Matlab最基本的单元为array,无论是什么类型也好,如有double array、 cell array、 struct array……所以a,b,c都是array......9.开机喜事到,向您问个好,办事处处顺,生活步步高,彩票期期中,好运天天交,打牌场场胜,口味顿顿2好,越活越年轻。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-07
你给出具体的例子看看吧,你的问题无法回答啊?

matlab函数callback调用错误怎么办?
你这个程序应该是,按下按钮,按钮随机的在图中移动吧。你这个callback调用错误的直接原因是:回调函数中的单引号换成两个单引号而不是一个双引号。另外,你这个程序还有其他的一些需要改正的地方。1.要将位置设置的基本单位归一化,默认应该是像素。使用units可以归一化 2.虽然matlab支持小数点前的零可...

安装matlab时,以管理员身份运行,调用主函数出错
系统原因、网络原因。1、系统原因。安装matlab时,以管理员身份运行,调用主函数出错是系统故障导致的,是系统原因造成的,等待其系统完成修复即可。2、网络原因。安装matlab时,以管理员身份运行,调用主函数出错是网络延迟卡顿导致的,是网络原因造成的,重新更换网络即可恢复正常。

matlab中调用solve函数出错?怎么解决
1、solve函数的这种调用方式:solve('lambda-(-2*log10(2.51\/Re\/sqrt(lambda)+0.27\/l(i)))^(-2) = 0','lambda')是把整个字符串作为参数传递给符号计算内核的,给参数l和Re赋值不起作用,所以在符号计算内核求解时会把l、Re也看成变量,从而导致求解失败。解决的办法是,定义符号变量lambda...

Matlab函数的调用错误求解释
解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便。MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的。可以这样理解,MEX文件实现了一种接口,它把在Matlab中调用函数时输入的自变量通过特定的接口调入了C函数,得出的结果再通过该接口调回Matlab。该特定接口...

matlab中调用solve函数出错?怎么解决
1、solve函数的这种调用方式:solve('lambda-(-2*log10(2.51\/Re\/sqrt(lambda)+0.27\/l(i)))^(-2) = 0','lambda')是把整个字符串作为参数传递给符号计算内核的,给参数l和Re赋值不起作用,所以在符号计算内核求解时会把l、Re也看成变量,从而导致求解失败。解决的办法是,定义符号变量lambda...

activatematlab时调用函数错误
首先建立M函数文件右键——新建——函数,其中函数文件的格式是:function[输出变量]=函数名称(输入变量),是编写的一个求1到n之和的求和函数。保存的函数文件名来调用函数,依次把即将要被调用的文件保存到窗口CommandWindow运行的主界面文件夹,在CommandWindow窗口新起一行,写好文件名,把所有输入变量...

matlab 中function 怎么用,总是提示错误呢?
2. if的最后一种情况应该是else,就是包含所有前面漏掉的情况,不然万一u=-20(举例),这个函数不知道该return什么值给你,就会出错。如果你把前面的分段改成了等于的情况,没有漏掉的,那可以把最后一个elseif换成else,表示这是最后一种情况了,也就不用specify具体的区间是什么,因为刨去上面涉及...

matlab提示错误:此上下文中不允许函数定义.
1、首选,打开编译器,然后在命令行中键入edit打开,如下图所示。2、其次,完成上述步骤后,输入Function以表明该文件是功能文件,如下图所示。3、接着,如果在等号的左侧输入了任何返回值,请使用方括号表示多个返回值,如下图所示。4、然后,等号的右边是函数名称加括号,括号是参数,如下图所示。5、...

在MATLAB仿真中,为什么老是说Undefined function or variable 'x...
这个错误是未对x定义造成的。错误原因及修改方法如下 没有给变量x赋值。在函数调用x前要给x赋值,例如x = 5;x已经赋值,但由于是在一个函数中赋值,但是在另一个函数中调用。此时用global在两个函数中分别声明x为全局变量。可以解决。

matlab 函数调用老是出错怎么办??
是你自己写的函数吗,首先需要注意的是你的函数必须保存在你的当前文件夹下,这样才能直接调用。或者你可以把你保存函数的文件夹设为默认文件夹。还有你函数的输入输出都需要注意是正确的。当然这些是你的函数编写正确的情况下。可以把错误拿出来看看就更好了!祝你早日解决问题!

相似回答
大家正在搜