我是Matlab的新用户,请你帮忙:
我在.M文件中有以下代码:
function f = divrat(w, C) S=sqrt(diag(diag(C))); s=diag(S); f=sqrt(w'*C*w)/(w'*s);
我已将此文件(divrat.M)存储在正常的Matlab路径中,因此我假设Matlab将在启动时读取该函数,因此该函数应该可以使用.
但是,当我输入
>> divrat(w, C)
我收到以下错误
??? 未定义的函数或方法'divrat'表示'double'类型的输入参数.
什么是告诉我的错误消息,我在代码或函数调用中看不到任何错误?
当函数不在MATLAB路径或pwd中时,会出现此错误.
首先,确保您能够使用以下方法找到该功能:
>> which divrat c:\work\divrat\divrat.m
如果它返回:
>> which divrat 'divrat' not found.
它不在MATLAB路径或PWD中.
其次,divrat
使用该PATH
命令确保包含的目录位于MATLAB路径上.可能是您认为在路径上的目录实际上不在路径上.
最后,请确保您没有使用"私人"目录.如果divrat
位于名为private的目录中,则可以通过父目录中的函数访问它,但不能从MATLAB命令行访问:
>> foo ans = 1 >> divrat(1,1) ??? Undefined function or method 'divrat' for input arguments of type 'double'. >> which -all divrat c:\work\divrat\private\divrat.m % Private to divrat
正如其他人所指出的那样,这很可能是函数文件路径不在Matlab的"路径"中的问题.
验证这一点的一种简单方法是在编辑器中打开您的功能,然后F5按键.这将使编辑器尝试运行该文件,如果文件不在路径中,它将提示您一个消息框.选择Add to Path
那个,你一定要好好去.
一方面注意:在上述过程结束时,Matlab命令窗口会给出一个错误,说明参数丢失:显然,当我们尝试从编辑器运行时,我们没有提供任何参数.但是从现在开始,您可以使用命令行中的函数给出正确的参数.