- 积分
- 3601
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-9-8
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 hillside 于 2017-9-29 12:37 编辑
说明:本文的问题主要是近期2011版、2012版快要过期(11-nov-2017)引起的。由于复制网上解决办法的疏忽(后来核实发现,是转载的一位马大哈将原文的后一半搞漏了,害得我排查了几天:https://www.ilovematlab.com/thread-527616-1-1.html),漏掉了部分了部分模块许可证,以致“help ***”、“ediit ***”虽能使用,但“which ***”显示“许可证不存在”。附件中为来自网络的“MATLAB2011与2012等版将过期的应对经验摘录”。
MATLAB运行过程中,经常会出现Undefined function or method '......' for input arguments of type 'double',其中的原因可能多种。
由于近期多个版本的MATLAB(如2011、2012版)显示即使失效,有网友提供了解决方案(见附件)。我重装了MATLAB2011a,无意间发现,使用regress函数时,明显目录中存在,也在路径中,且"help regress"也正常显示。然而,就是不工作(??? Undefined function or method 'regress' for input arguments of type 'double'.)。网上搜索并排查了几天,终于在常见的“函数没有定义、工作目录中不存在,不在搜索路径中、不同路径中存在同名函数”之外发现了一个原因,原来是该函数的许可证已过期。我由于采取了网络上的过期解决方案,表面上已不显示过期信息,已不清楚显示过期信息以前有关函数单独的版本信息。
排查过程中,明显安装目录中有函数regress,也在搜索路径之中、虽有同名文件但似乎没有干扰,help regress、edit regress也正常地显示,一时排查没有了头绪。
本人在搜索中外网络过程中,仅发现一条针对性比较强的帖子,提到了检查函数版本过期的命令。原来,which命令才能发现真相。MATLAB命令窗输入"which regress"之后,立即真相大白,该函数没有许可证。
其他相关的排查技术包括全角的逗号等等。如有一篇网上帖子:
http://blog.csdn.net/huchunfu/article/details/8273643
MATLAB报错Missing variable or function
Bertrand 2012年12月08日
今天用MATLAB做仿真实验时,总是报错Missing variable or function,始终找不到错误的原因,表达式中变量和函数都不缺少。该表达式是从笔者编写的另一M文件中复制过来的,该表达式在另一个程序中运行时并没有报错,这让我百思不得其解。最后,好好想了想表达式复制过后做了哪些改动,终于让我找到了答案,原来是表达式中的标点符号是在”中文“输入法下输入的。
错误的表达式(逗号是中文格式): if ( X(1) < Beacon(2,MRSSI(1,1)) && X(1)<Beacon(2,MRSSI(1,2)))
正确的表达式(逗号是英文格式): if ( X(1) < Beacon(2,MRSSI(1,1)) && X(1)<Beacon(2,MRSSI(1,2)))
MATLAB编程中经常会报错,逻辑上的错误通过输出局部变量都能容易找到出错的原因,但是有些细节型的错误很难找出错误的原因。如:标点符号要是英文格式,括号不成对,函数变量缺失等等。其实,大家都知道标点符号要是英文格式的,但是一时疏忽就写成中文格式的了,这种错误很难被发现。
编程时要细心,注重细节了,程序运行时报错率才会少。
|
|