关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法

MATLAB的M文件分为两种:一种为脚本文件,另一种为函数文件。

脚本文件很简单,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是encrypt.m编写好后直接点F5或者运行键运行就行,不存在出现诸如“未定义函数或变量”的问题;
函数文件就相对复杂一些,第一行为function,比如说像function result=encrypt(n)这样的文件,函数名与文件名是一致的,在命令窗口里输入encrypt(n),n是运行参数,按回车即运行。
注:命令窗口中若想多行输入,每另起一行时按“Shift+Enter”键即可。

在函数文件中,很可能会出现如下图这样的问题:
在这里插入图片描述
在本问题提供解决办法前,整个过程先引入一个实例可以更好地说明这个问题:
:从键盘输入一个4位数,按如下规则加密后输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。

函数文件:

function result = encrypt(n)
a=fix(n/1000);
b=rem(fix(n/100),10);
c=rem(fix(n/10),10);
d=rem(n,10);
a=rem((a+7),10);
b=rem((b+7),10);
c=rem((c+7),10);
d=rem((d+7),10);
result=c*1000+d*100+a*10+b;
end

命令窗口:

>> n=input('请输入一个四位整数');
result=encrypt(n)

运行结果截图:
在这里插入图片描述
我们发现:咦?代码明明没问题呀,为什么弹出“未定义函数或变量’encrypt’”这种问题呢。

下面就说明一下这个问题的由来和解决办法:
情况一:文件路径与系统当前路径不匹配
在这里插入图片描述
大家发现,文件路径是“F:\encrypt.m”,而MATLAB系统路径是“E:\software\MATLAB R2018awin\MATLAB\bin”,很显然文件路径与系统当前路径是不匹配的。这时,我们将我们的M文件(另存为)存储到“E:\software\MATLAB R2018awin\MATLAB\bin”路径下,这时我们惊奇地发现问题解决啦!
简单来讲,要想运行成功,前提是文件路径与系统当前路径必须一致。

情况二:函数名与文件名不一致
在这里插入图片描述
这张图就是文件名与函数名不一致的情况,这也会导致“未定义函数或变量’encrypt’”这种问题的出现,解决办法就是把文件名改成“encrypt.m”或者将函数名改为hello(n)即可。这里建议将文件名改为函数名,因为这样你会发现你省去了修改命令窗口中函数名的麻烦。
注:所有的符号必须是英文状态下的喔,不然会报错的。

情况三:命令窗口中直接写函数名
在这里插入图片描述
这种情况除非已经在函数文件中定义了函数名才会避免。否则没有函数文件直接写这条命令语句肯定是不可行的。

最后,给出排除了所有报错可能,正确得到运行结果:

在这里插入图片描述

OK!以上就是关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法的总结。希望能帮助到更多小伙伴!

扫描二维码关注公众号,回复: 10777459 查看本文章

大家有什么想法或者发现新的问题及解决办法别忘了在评论区告诉我哦!

欢迎评论,感谢阅读!

END

发布了23 篇原创文章 · 获赞 176 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/IT_charge/article/details/105444948