所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

MATLAB提示不能在脚本中定义函数,是什么意思?

发布时间:2020-04-12 09:03:15

资讯分类:matlab  函数  脚本  定义  函数  局部  脚本
MATLAB提示不能在脚本中定义函数,是什么意思?

All comments and opinions expressed on Zhihu are mine alone and do not necessarily reflect those of my employers, past or present.本文内容所有内容仅代表本人观点,和Mathworks无关MATLAB语言值得关注的新功能系列:脚本的局部函数MATLAB已有的对局部函数(Local Function)的支持包括:在函数中定义局部函数, 和在类定义定义局部函数:局部函数存在的意义是:首先它是一个函数,它可以重用;其次它的作用域是局部的,也就是说,只有在函数或者类定义内部,它才是可见的。局部函数的优点是:我们不需要给个定义的函数都提供一个单独的m文件,众所周知。太多m文件会'污染'MATLAB的路径空间,如果你同时使用几个工具箱,很难保证m文件没有重名,如果有重名,有时路径的顺序不同会导致对文件分派(Dispatch)的不同,可能会给计算带来想不到的错误。从R2016b开始,MATLAB开始支持在脚本中声明和使用局部函数, 下面的脚本中,对函数fac的使用,实际调用的是script_fac中的局部函数% script_fac.m fac(2) fac(6) function result = fac(n) if n == 1 result = 1; else result = n*fac(n-1); end end在命令行中运行该脚本>> script_fac ans = 2 ans = 720对于不使用Local Function的情况,完成上述的工作,我们需要两个文件,一个脚本,一个函数, function in script带来的便利显而易见。可以在脚本中定义函数,这是MATLAB在语言的易用性上的又一重要的改进。因为并不是要用MATLAB解决的问题都是大型的工程问题,对于小型的工作项目,我们有理由期望不需要花很多时间在文件的创建和管理上,如果所有相关的内容都能集中在一个文件中,这样也方便查找和管理。与函数局部函数,类局部函数规则一样,脚本局部函数可以有多个,比如下面这个脚本计算组合中有两个局部函数% script_2.m comb(6,3) function result = comb(n,k) result = fac(n)/(fac(k)*fac(n-k)); end function result = fac(n) if n==1 result =1 ; else result = n*fac(n-1); end end 局部函数有自己的函数工作空间:它无法访问脚本中的变量,除非脚本把变量当做参数传递给它+--------------------------------+ | % script_3_1.m | | a = 1; | a是脚本中的变量 | b = 2; | | foo(b); | | .. | | | |+-----------------------------+ | || function foo( n) | | || ..... | | || | | foo内部无法直接访问a || | | |+-----------------------------+ | +--------------------------------+局部函数的使用同正常的函数无异,它可以有自己的persistent变量,比如下面的这个脚本,可以记录自己被调用的次数:% script_3_2.m s = sprintf('I am called %d timesn',getCount()); disp(s); function result = getCount() persistent c; if isempty(c) c = 1 ; else c = c + 1; end result = c; end如果MATLAB路径上恰好有和局部函数同名的函数,在脚本中,MATLAB将把函数分派到局部函数上. which + bar仍将返回MALTAB路径上的bar.m 本篇介绍了一个近年来MATLAB语言值得关注的新功能之一:脚本的局部函数。综上:MATLAB 从R2016b开始支持脚本中定义局部函数定义局部函数的语法和普通函数一样局部函数拥有自己的工作空间局部函数可以帮助我们更好的管理组织函数作者简介:MathWorks开发部MATLAB架构C++高级软件工程师。计算物理学博士,研究方向为电子结构计算、密度泛函算法开发;计算机硕士,研究方向为图像处理。2004年,开始使用MATLAB,在科研编程中遇到了开发大型程序难以维护的困难,花了很多时间用于改进程序但效果总不尽如人意。2009年,开始使用MATLAB面向对象编程,发现工程进度被迅速加快,于是萌生了写一本介绍MATLAB 面向对象编程书的念头。2011年,在美国取得博士学位之后入职MathWorks,从理科科研工作者和多年的MATLAB爱好者,成为一名MATLAB语言的设计开发和实现的软件工程师。2016年,作者在MATLAB中文论坛开辟了技术专栏,和大家分享最新的行业应用技术和MATLAB编程理念,旨在推动软件工程中的现代手段在MATLAB科学工程计算项目中的使用,帮助科学家和工程师们更有效地解决复杂的科研问题。《MATLAB面向对象编程:从入门到设计模式(第二版)》 凝结了作者多年的科研和工作经验以及对MATLAB语言的理解,希望能对各种规模的科学工程计算项目的MATLAB使用者有所启发。

MATLAB提示不能在脚本中定义函数,是什么意思?

你试图在命令窗口定义函数,这种做法是错误的。你需要建立一个.m文件,文件名是Chebyshev.m,然后在里面输入源程序。

MATLAB提示不能在脚本中定义函数,是什么意思?

定义函数必须在M文件内编辑才行,不然运行不了

留言与评论(共有 0 条评论)
   
验证码:
Top