本文主要给大家分享使用matlab编写代码,完成课程设计、毕业设计或者研究项目时,matlab调试程序的技巧和方法。
快速完成一个项目,最简单的方法就是利用前人的开源代码,然后根据自己项目的具体需求和参数,对已有代码进行调试,并增加或删减部分功能,最终实现自己项目的全部功能。所谓“站在前人的肩膀上”。
闲话少叙,我们先从最基本的matlab软件安装开始,已经成功安装matlab软件的可以直接跳过。
1. 正确安装matlab软件
下载matlab软件
首先下载你想要安装的matlab安装文件,建议不要下载过于陈旧的版本,至少应该是matlab2010之后的版本。因为随着matlab版本的更新,增加了一些新的函数,并对不安全的函数使用进行了删除。部分代码的调试,可能由于过于陈旧的matlab版本,可能导致调试报错。
另外,请大家支持正版,在官网购买matlab软件或者使用其30天免费试用版。
当然购买官方正版比较适合商业应用,对于学生和科研用途,购买费用恐怕难以接受。请自行下载破解版。
安装matlab软件
下载软件后的安装方法比较简单,这里不再赘述,请大家移步百度经验,搜索“matlab安装”,会有简单明了的安装教程。
安装matlab的路径,建议没有中文字符或者空格。这样可以尽最大可能减少程序运行时,由于中文路径不识别导致的错误。
2. 下载的代码包里的文件都是干什么的?
当我们从网络上下载matlab的源代码时(例如:专注matlab代码下载的网站www.downma.com),得到的通常是代码的压缩包,里面包括很多各种后缀的文件。他们都是什么文件呢,都是干什么用的?
m后缀的文件:这是matlab代码的最常用后缀,就像C++的常用后缀是cpp一样。只要看到.m文件,你就知道这个是matlab的代码。和C++不同的是,很多matlab的自定义函数,也是单独定义在m文件中的。
fig后缀的文件:这个是matlab输出的绘图结果保存的文件,保存着各种仿真结果的曲线。此外,GUI的图形用户界面也是以fig文件的形式保存的。
asv后缀的文件:这个是matlab对用户编辑时间较长的m文件自动保存的文件。对代码的运行不起作用,是可以删除的。
mdl后缀的文件:Simulink是matlab的另外一个强大的仿真功能。与代码方式进行仿真的m文件不同,mdl文件主要是通过各种Simulink的模块,进行实时仿真的文件。
mat后缀的文件:mat文件是用来存储数据的,可以理解为matlab的小型数据库。保存形式类似于excel表格,可以直接加载到程序中,变成相应的变量,也可以作为程序输出结果的保存文件。
p后缀的文件:p文件是为了保护知识产权设计的一种加密文件,是不能查看的。其作用和m文件类似,封装了自定义函数,不可以删除。
txt、doc的文件:有一些代码包会同时携带说明文件,包括程序的用途和参数,还包括程序运行时的注意事项等。还有一些简单的matlab代码,直接保存到文档里。可以直接复制到matlab中,保存为m文件,进行调试和运行。
还要一些文件不是代码部分,而是程序要处理的源文件。例如,图片文件jpg,bmp,gif;视频文件avi;音频文件wav等。这些文件的位置不要轻易改变,否则会影响到程序对这些源文件的调用。
在有些情况下,代码包里还有一些cpp、h后缀的C++文件。这些代码通常是matlab和C++进行混合编程时使用。如果你的项目重点不是混合编程,忽略即可,但是不要删除。
3. 怎么正确启动主程序?
Matlab的工作目录设置
很多人都说,网上下载的代码怎么都运行不起来,各种报错?其实,是你的打开方式不对。
最重要一点:你的“matlab当前工作目录”一定要是你下载的代码压缩包解压后的文件夹!因为通常matlab的默认工作目录,并不是你的代码所在文件夹。当然,你也可以把所有代码都解压到matlab的默认工作目录里。
matlab代码工作目录
怎么找到主程序文件?
如果你下载的代码具有图形用户界面GUI,那么通常情况下.fig文件就是这个代码的主程序,你只要在确保工作路径正确的情况下,在命令窗口输入xxx.fig,然后回车即可。这样用户界面就会弹出来了。
如果你下载的是Simulink模型代码,确保mdl文件在工作路径,然后在命令窗口输入Simulink,回车后即打开Simulink软件,打开mdl文件即可,然后点击调试运行mdl文件。此外,还直接运行mdl文件,在命令窗口输入sim(’xxxx.mdl’, Trange)其中Trange是仿真时间。
大多数情况下,你下载的是m文件组成的matlab仿真代码。这个时候,只要找到主程序的m文件,打开点击调试运行按钮即可(或者直接按F5或F9)。或者在命令窗口输入主程序的文件名,例如xxx.m或run xxx.m,回车即可运行。
当然,如何找到主程序m文件就至关重要了:
首先,如果代码包里提供了说明文档,请参照说明文档找到主程序。
如果代码包中没有说明文档指出哪个代码是主程序,通常可以通过m文件的命名方式判断。例如以main.m,test.m或中文命名的m文件就是主程序文件。
如果上面的方法不能帮你找到主代码文件,你就需要逐个m文件打开,通过代码的内容来判断是否是主代码了:
如果有m文件是以clear all,clc等清空命令开始的,通常这个文件就是主程序文件;
如果有m文件的开始包含很多关于参数和程序用途的注释部分,通常这个文件就是主程序文件;
如果有m文件不是自定义函数,即不是以function开头的m文件,通常这个文件就是主程序。因为以function开头的多数情况下是自定义函数,仅作为被调用使用;
如果所有的m文件都是自定义函数,那就表示代码的主程序文件是以自定义函数的形式出现的。这个时候那个没有输入参数的自定义函数文件,就很有可能是主程序文件了;
如果所有的m文件都是自定义函数,而且都包含输入参数,很有可能你下载到的是一个工具箱,没有主程序,需要你根据需要自己编写主函数,调用这些自定义函数文件。
此外,使用自定义函数的m文件,一定不是把代码全部粘贴到命令窗口运行的,而是要使用参数调用的。
当然,主程序的m文件可能不止一个,也就是说代码包里包含多个不同功能的主程序。
4. 常见报错及解决方法
错误1:图片或声音文件不存在
当你运行主程序后,命令窗口提示类似unable to find file或者file xxx doesn’t exit的错误,通常是因为缺少图片或声音等源文件导致的。
例如作者在上传代码时,仅仅包含了代码部分,没有包含要处理的图片或声音文件,这时候会出现找不到文件的错误。我们找到代码中加载图片或声音文件的语句,例如imread、wavread等语句。然后根据需要的图片或声音文件,自己补充这个源文件。
错误2:函数不存在
当你运行主程序后,命令窗口提示类似Undefined function or method的错误,通过是某个自定义的函数文件丢失或者工作路径不正确导致的。你要反复确认这个自定义函数的m文件是否包含在matlab的工作路径内,然后确认当前版本的matlab软件是否自带该函数。