| M文件函数 |
| 责任编辑:admin 更新日期:2005-8-6 |
| nbsp; % Copyright(c)1984-94byTheMathWorks,Inc. msg=[ ]; if(number<low) msg='Notenoughinputarguments.'; elseif(number > high) msg='Toomanyinputarguments.'; end下列的文件片段表明了在一个M文件函数内的典型用法: error(nargchk(nargin,2,5)) 如上所示,如果nargin的值小于2,函数error象前面描述的那样进行处理,nargchk返回字符串‘没有足够的输入参量。’。如果nargin的值大于5,函数error执行处理,nargchk返回字符串‘太多输入参量。’。如果nargin是在2和5之间,函数error简单地将控制传递给下一个语句,nargchk返回一个空字符串。也就是说,当它的输入参量为空,error函数什么也不做。 21. 当MATLAB运行时,它缓存了(caches)存储在Toolbox子目录和Toolbox目录内的所有子目录中所有的M文件的名字和位置。这使MATLAB很快地找到和执行函数M文件。也使得命令lookfor工作更快。被缓存的M文件函数当作是只读的。如果执行这些函数,以后又发生变化,MATLAB将只执行以前编译到内存的函数,不管已改变的M文件。而且,在MATLAB执行后,如果M文件被加到Toolbox目录中,那么它们将不出现在缓存里,因此不可利用。所以,在M文件函数的使用中,最好把它们存储在Toolbox目录外,或许最好存储在MATLAB目录下,直至它们被认为是完备的(complete)。当它们是完备时,就将它们移到一个只读的Toolbox目录或文件夹的子目录内。最后,要确保MATLAB搜索路径改变,以确认它们的存在。 22. 在Toolbox目录外,MATLAB跟踪M文件的修改日期。所以,当遇到一个以前编译到内存的M文件函数时,MATLAB把已编译的M文件的修改日期与在磁盘上的M文件比较。如果日期是相同的,MATLAB执行已编译的M文件。相反,如果在磁盘上的M文件是新的,MATLAB清除以前已编译的M文件,且编译这个新的和修改过的M文件。 23. M文件的缓存过程按MATLAB版本而稍有不同。例如,MATLAB 4.2c在Macintosh机上同样可以缓存当前的目录,因为这是第一个所搜索的磁盘位置。这个MATLAB版本也允许有选择地将整个MATLAB搜索路径缓存,并把高速缓存信息存储在一个文件中。这样,使MATLAB引导更快,寻找和编译所有函数M文件更快。退出缓存,不检测已修改的或已增加的M文件。当新的M文件加到一个缓存区时,只有当高速缓存由命令»path刷新时,MATLAB才能找到它们;另一方面,当修改缓存的M文件时,只有当以前编译过的版本由clear命令从内存中清除,MATLAB才识别这个变化。例如,»clearmyfun,从内存中清除M文件函数myfun,或»clearfunctions,从内存中清除所有已编译的函数。 24. 在变量mfilename函数内,有要执行的M文件的名字。例如,正在执行M文件function.m时,函数的工作空间包含变量mfilename,它包含函数字符串。这个变量也存在于脚本文件里,在这种情况下,它包含了要执行的脚本文件的名字。 25. M文件函数可象MATLAB命令一样工作,典型的MATLAB命令包括clear,disp,echo,diary,save,hold,load,more,和format。通常,调用一个函数把参量放在括号内。例如size(A)。然而,如果函数有字符串参量,那么,函数可按通常函数进行调用,如,disp('Tobeornottobe'),或象一个MATLAB命令来使用,如clearfunctions。换句话说,当要求MATLAB解释一个表达式»commandargument时,MATLAB认为它如同»command('argument')一样。事实上,MATLAB命令本身能象函数那样调用!例如»formatlong和»format('long')二者都把数据变成长格式。类似地,»formatshorte等价于»format('short','e')。正如最后的例子所示,空格(逗号,分号)把各个命令参量分开。因此,»dispHowaboutthis?产生一个错误,因为命令disp只允许一个输入参量,不是三个。如果参量包含在引号里,那么MATLAB就忽略空格;例如,»disp'Howaboutthis?'与»disp('Howaboutthis?')等价,并产生所希望的结果。 总之,函数M文件提供了一个简单的扩展MATLAB功能的方法。事实上,MATLAB本身的许多标准函数就是M文件函数。 |
|