matlab心得体会.docx
- 文档编号:4433344
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:7
- 大小:24KB
matlab心得体会.docx
《matlab心得体会.docx》由会员分享,可在线阅读,更多相关《matlab心得体会.docx(7页珍藏版)》请在冰豆网上搜索。
matlab心得体会
matlab心得体会
MATLAB学习心得体会
Matlab,提起它,不管我们上课是否认真听讲了,我们都应该对它不再陌生,我们不可否认它的强大之处,正如一节课时老师给我们说的“Matlab可以做很多事情”。
通过近一段的学习,使我更加确信,它是一款集数据分析^p、矩阵运算、信号处理和图形显示于一体,可方便地应用于数学计算、算法开发、数据采集、系统建模和仿真、数据分析^p和可视化、科学和工程绘图、应用软件开发等方面的强悍软件,是研究人员、工程人员研究工作中不可多得的工具。
正因为其强大之处,以及可视性及可交互性使我对它的学习产生了浓厚的兴趣。
开学至今,短短十次课,我们学习了Matlab矩阵及其运算、Matlab程序设计、M文件操作、M文件调试、M文件高级编程以及Matlab绘图等„„不敢保证每节课都认真听讲,但都尽力去听,一段时间下来,对Matlab还是有了一定的框架性认识及编程能力。
但对于Matlab这样的软件来说,套用曾经一个老师
说的话“我给你们讲的都是皮毛,你们学到的更是皮毛中的皮毛”,虽然有点搞笑,但却是不争的事实,学习软件类的东西,最好的办法就是激发兴趣和多加练习。
我想当老师在课堂上给我们演示如何用Matlab编程解决一些实际问题以及编程出现一些绚丽丰富的图形时,我们无不惊叹其美丽,我想凭这一点激发起同学们的兴趣是没有问题的,但问题是同学们为什么还说它难学呢?
关键还是在于同学们下课后缺乏锻炼,加之每次课间隔时间较长,仅凭上课时记得的东西,是很难连贯及熟练运用的。
关于如何才能够更好地学习好Matlab,通过下面同学们之间的交流,综合同学及个人意见,提出以下几点建议(纯属个人观点,如有不妥,还请见谅):
1、针对学习资料:
希望邮箱中上传文件标清章节号,一来方便有兴趣及精力的同学提前学习,二来方便同学下来后及时按照章节复习。
(注:
尤其是对初学者由易到难的过程中显得尤为重要)
2、针对上课学习
对于软件类的学习存在这样一个问题,那就是同学们上课挺感兴趣得听讲,听到入迷时恨不得立刻就找一台电脑试一试,但下课后可能去忙其他事情,不一会儿,这一份热情就消退了,也不会再去练习。
针对此,考虑到目前大多数同学都有电脑的情况下,我们是否可以让同学们上课时带电脑到课堂上,一方面老师在讲台上演示,另一方面同学们在下面即时练习,这样也许会收到更好地教学效果。
3、针对课下学习
本学期Matlab学习,老师给的课下作业很少,也许老师考虑同学们比较忙,以及可能交上来的作业效果质量达不到预期效果。
但我认为适量的课下作业还是非常有必要的,尤其是对于目前大学生普遍自制力较差的情况,这点显得更加有意义。
针对如何布置课下作业以及布置什么作业,根据自身学习经验认为这样比较好:
课下作业可以布置那些上课老师演示过的程序或中程序略加改动,让同学们下课后及时完成上交。
这不仅使同学们及时复习课上学习内容,也不至于使那些学习效果不佳的同学认为作业太难而直接放弃做去copy别人的。
以上即为近期学习Matlab的一些心得体会,限于学习的程度及能力有限,上文难免有认识肤浅之处,恳请批评指正。
Matlab是一个基于矩阵运算的软件
1.help只是寻找函数类,一般不如用doc(相当于帮助文档中的搜索),但在用doc搜索不到帮助文件时可用help,如找有关\\\\的帮助等;打开格式非标准的mat或_ls等数据文件如dat文件或无后缀名的文件时,不要用打开方式打开,而应先打开应用程序如MATLAB或e_cel,然后在应用程序中打开数据文件,这样能得到正确的行数和列数;lookfor可对M文件的第一行进行关键字搜索,比help条件宽松;MATLAB大小写有区分。
用which搜索路径;要打开matlab自带的m文件直接用open即可,不需要找到路径,会在当前目录和setpath的路径中搜索。
2矩阵的运算注意:
标量与矩阵进行四则运算时该标量与矩阵的每个元素进行运算;两矩阵相乘左矩阵列数须等于右矩阵行数;矩阵除法有左除\\\\(反斜杠)和右除/(斜杠),A\\\\B=inv(A)_B,A/B=A_inv(B);方阵的乘方运算有四种:
A^n,A,s^A,s.^A,其中A为方阵,n为整数,p为非整数,s为标量;A’表示矩阵A的转置,一般选中了Hermitian(共轭)复选框则元素带共轭;funm(A,’fun’)表示矩阵的函数运算,要求A是方阵,fun为矩阵运算函数名;给矩阵赋值时维数必须匹配,用方括号,一个分号为一行。
3.数组的运算注意:
数组乘法运算符为._,表示两数组中对应元素相乘;数组的除法运算符为.\\\\和./,表示对应元素相除;数组与数组运算时,参与运算的数组必须同维,结果为数组中每个元素进行运算所得;直接用结构名赋值即省略了
(1);varargout返回输出变量list即一系列变量名称;feval(@fun,var1,„)用var1,„试算[evaluate]fun的值;读二进制文件常用fopen和fread组合,matlab读fortran写出的二进制文件时往往要在fopen中加"b";读文本文件常用te_tread和fopen;fscanf组合,要注意格式,最好读完后对照打开看看。
4.标准差std(_,flag,dim)默认flag=0,dim=1计算公式为的平方根,flag=1时分母为n;可通过h=figure(i),后用get(h)获得图形对象所有属性的当前值,其格式为:
属性名=属性值;结构数组可在域名后加(a,b)再加.变量名,调用时输变量名可使用tab完成;利用struct函数一次输入多个结构元素时注意用单元数组,用{}而非[]。
5.左除和右除的两边不一定是方阵,当A为m_n矩阵,B为列向量时,A\\\\B表示A__=B在最小平方意义上的解,需对A进行QR分解,mn时解通过(A"_A)\\\\(A"_b)求得,而A/B=(B"\\\\A")";积分可以查一下积分命令quad或者trapz。
6.注解块操作符{和}必须单独成行否则不起应有作用;struct([])表示结构数组,name1.name2表示name1为结构数组;函数名切记不要与MATLAB内置函数重名否则会出现错误因为系统先从当前目录寻找匹配的函数;MATLAB可以把程序制作的动画生成avi格式的视频,须把avifile,getframe,addframe,close配合起来使用。
7.启动notebook后word文档的菜单栏中没有出现Notebook菜单项,可以依次单击工具-》自定义-》命令-》宏,选择保存于mbook.dot上的宏TemplateProject.mwNewNotebook..MAIN(把他拖到菜单栏然后单击,没必要)就会出现Notebook菜单项;计算区(CalcZone)不要弄,evaluateM-book一般也不要用;单元转换为文本可以常用。
8.低级文件I/O函数很重要,因为它可读写二进制文件,便于与FORTRAN结合;读写之前先用fopen(filename,mode),注意都要加单引号,返回值如ans=0表示操作成功,-1表示不成功;一定要注意r和w因为w会删除原文件所有内容;读用fread(fid,count,precision,skip)其中precision如"uint8=>char"读取文本文件,注意在fclose(fid)之前是连续读的,不指定precision默认按字节读取可能会出现很多元素为0;fwrite(fid,A,precision,skip)用二进制格式写入文件,skip参数对于将数据插入到已知长度的记录中非常有用;重设文件指针位置用fseek(fid,offset,origin)表示在fid指定的文件上按照origin给出的参照点,相对移动offset个字节,注意如果指针不在开头要重置到开头origin应选"cof"当前位置而不选"bof"文件开始,重置完后可用ftell(fid)知道指针当前位置相对于bof的字节数,还可用ferror(fid)查询错误信息;还可用fred(fid)函数将文件位置指针返回到文件起始位置;从文本文件读字符串行用fgets(fid,nchar)表示读一行文本并带有行结束符,每次读nchar个字符直到遇上结束符。
9.如果运行的M文件有错误,而且在命令窗口又要运行M文件中定义错误的内置函数时可能会出现错误,这时应改工作目录;有些内置函数可在命令窗口运行但在M文件中运行可能会出现错误,如sphere(n);脚本M文件与命令窗口公用变量工作区,而函数M文件有单独的变量工作区,切实注意了;关系操作表达式返回的是逻辑型值即0和1。
10.数组维数扩展时下标不要用1,因这是默认下标用1后结果是重新赋值;不同数组类型转换如cell2struct等之前一定要先看数组尺寸size(array);变量名切记不要用函数名,否则调用函数时会出错还不知错在哪,因MATLAB优先使用变量名而非函数名,比如定义了变量ma_再调用ma_函数时就会报错Subscriptindicesmusteitherberealpositiveintegersorlogicals;中括号加引号用于多个文件名可以,用于多个变量名不行;简单统计量比如最大值,最小值,平均值加减后再统计和统计后再加减结果一样;函数不管用或者出错应检查是否不小心加了等号。
11.设置坐标轴刻度和属性时用set(gca,"_tick",数值数组);set(gca,"_ticklabel",字符串数组);切记是label不要写成lable;用bo_off可以去掉右边和上边的刻度和边框;把右边和上边分别作为y和_轴可以加画图形,但最好不用plot而用line;有关坐标轴设置的例子可见我的程序plotNino.m;要实现坐标轴隔点标注数值且所有点间隔线均保留需设置两次坐标轴,第一次显示所有间隔线第二次用a_2=a_es后隔点标注;放大工具只对a_2有效;标注时字符矢量用{}且非数字字符必须加引号;注意annotation中[_ywh]的_,y是对整个figure而言;标记单个数据点用scatter即可。
12.MatLab小波分析^p工具箱中一些学习心得:
进行多分辨率分析^p时,wavedec得到的小波系数是由最后一层的低频系数和各层的高频系数首尾相连而成,不是相加;用wrcoef可重构各单支系数的对应信号且saN+sdN+sdN-1+„+sd1近似等于原始信号s;用waverec一次重构的结果和单支重构的和稍有差别但差别很小如e-15;用wavedec时注意有些小波函数不能用如Morlet小波基等,具体可看wfilters;小波分解再重构后与原始信号相差最小的小波函数为db1即Haar小波基;
13.只有函数式M文件才能定义函数,脚本文件和函数不能写入同一个m文件中,即脚本文件中不允许出现function语句但可以调用同目录下函数文件中的函数;函数文件要想保留一些中间变量的值就要在函数外部调用因为函数调用结束时会销毁临时变量空间,需另写脚本文件,要不然就将需要导出的变量作为返回的参数或者用global申明全局变量;要使函数文件中的函数易被其他脚本文件调用,文件名最好为第一函数名;一张图中画多张子图时注意subplot(‘Position’,[])和a_es(‘OuterPosition’,[])在[]中值一样时子图的位置大小不一样,a_es的[]所给区域按比例缩小包含坐标轴标题等故值易确定但调用时要加(..,’Parent’,_),此外subplot可有系统给定区域;
1.help:
最有效的命令(参阅了瀚海mathtools的starrynight您的文章)其实,可以这样说吧,如果离开matlab软件,我想我自己是基本上什么都不会。
一遇到什么问题,通常我的第一反应是:
help,就先说说自己对help的一些常用方法吧。
1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。
2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入helptoolbo_name,一帮可以得到本工具箱有关的信息:
版本号,函数名等。
3)知道函数名,直接用helpfunname就可以得到相应的帮助信息。
2.seealso:
不可小瞧的关联
在用help命令的时候,可能因为我们开始估计的方向不一定完全正确,在列出的帮助信息中没有直接给出的我们要找的东西,但是我们一定不要忽略了在帮助的最后列出的seealso。
譬如:
曾经遇到一个画椭球的问题。
刚开始我以为这个命令函数应该在graph3d中给出的(顺带提一句,只用help的时候我们就可以看到matlab\\\\graph3dGenerateellipsoid。
3.lookfor:
matlab中的google当我们很多什么头绪都没有的时候,我们可以求助于它,往往会收到意想不到的效果。
譬如:
曾经在gui编程的时候,遇到过这样一个问题:
想拖动鼠标时,要出现一个方框,就像你在桌面上拖动鼠标,会出现虚线框一样。
当初我也刚开始一定都不知道该查找什么东西,后来想起用它了。
于是乎,>>lookforRectangle(很不好意思,当时这个矩形我还是在金山词霸中搞定的-_-)。
果然,在其中就找到这样一条信息:
GETRECTSelectrectanglewithmouse.^_^
4.get,set:
GUIobject属性的帮手
在GUI编程中,我们可能有时候想改变某些object的属性,或者想让它安装自己的想法实现,但是我们又不记得这些object的属性,更别提怎么设置他们的值了。
这时,可以用get(handles)得到此对象的所有的属性及其当前值。
用set(handles)可以得到对象所有可以设置的属性及其可能的取值。
找到我们需要的属性名字和可能的取值之后,就意义用get(handles,‘propertyname’)取得此属性的值,用set(handles,‘propertyname’,values)设置此对象此属性的值。
5.Edit:
查看m文件的助手
在应用matlab过程中,可能我们想看看它的m文件,当然用editor定位打开也行,但是我经常采用的式直接在mand窗口中用editfunname.m,就省去了定位的麻烦。
6.其他常用命令:
which,what等
which:
定位指定的函数和文件,最好带上参数-all,以便显示更加多的信息what:
获得指定目录的m文件,me_文件以及mat文件名列表。
MATLAB心得体会
这学期开了MATLAB这门课程,这里面有太多的学问。
只要书里面有最基本的语法和命令,对于一个有编程基础的人,MATLAB可以在一个下午的时间内学会。
当然,仅仅是学会。
如果想要对MATLAB比较得心应手,那么最好的办法就是练习。
练习的素材很多,比如对于学经济学的,可以做一些simulation之类的,也可以试着把计量或者宏观教材里面的一些算法写写出来。
一开始可能很慢,但是当你完成了一个比较大的project的时候,你的MATLAB的功力将会有巨大的提升。
用MATLAB的无非是做数值计算或者最优化,这也是MATLAB的强项,MATLAB有足够多的工具解决这些问题。
但是在使用这些工具箱之前,应该首先了解一些数值计算以及最优化的理论。
这一点在程序碰到问题或者计算结果不理想的时候尤为重要。
很多时候结果不理想并不是自己的理论出了问题,而是盲目或者错误使用MATLAB的工具箱而导致的。
比如我曾经做过一个单纯形法的优化程序,但是结果总是不理想,这个时候就要返回到单纯形法具体是一种什么样的来考虑这个问题,最后发现是由于目标的某一部分十分平缓导致的。
当然更重要的是如果你不理解理论,很多问题根本不知道如何处理。
有个学化学同学就曾问我一个程序怎么写,说MATLAB肯定可以完成的。
了解清楚之后才明白原来他想做的就是一个受限最小二乘。
但是他不懂得什么是最小二乘,当然面对这个问题无从下手。
这个问题没有人强调,但我觉着蛮重要。
这里的关键点其实很简单,就是尽量减少重复计算,哪怕是多项式复杂度以内的计算。
重复计算的内容应该适时保存到内存中,以后直接调用。
一个程序可能会重复运行几千次几万次,一点点的浪费时间都可能被放大很多。
空间(内存)我们是可以扩充的,但是时间不是,所以绝大多数时候我们需要放弃空间,获得时间上的迅捷。
这里有个故事,曾经在某技术论坛上看到的,说腾讯公司早期做的实在太过垃圾,他们追踪过的行为,发现在几分钟时间里重复调用了某同一注册表项几百次。
显然注册表的内容所占内存是有限的,甚至是可以忽略的,但是每次读注册表项可能都要读硬盘,这里的时间花费是很大的,为什么不把这项内容直接存储在内存里呢?
但是却多了三次计算时间。
请问哪种好?
不一定,看你的时间空间的权衡。
但是具体到这个例子来说,第二种是不推荐的,因为:
首先,第二种程序晦涩难懂,难以维护,内存不至于低到不能存储一个变量;第二,如果两个数字都特别特别大,计算a的时候会有溢出的危险。
我想几乎所有学过的人都被这样告诫过。
比较好的是MATLAB自带的编辑器本身就可以自动缩进之类的,程序十分易读。
但是还有一些东西是有些人不曾注意过的。
比如变量名,一个好的变量名一定要有清晰的含义,让人一看就能明白,否则日后的修改维护必然要花费更多的时间去识别这些变量名的含义。
这一点可以参考
这里面详细列举了很多命名的规则和技巧。
还有一点就是注释。
好的注释可以极大的方便以后的维护以及代码的重用。
我的习惯是在代码的开头都要交代这个代码是干什么用的,怎么用等等。
在程序中一个大块的功能模块也要加上注释告诉大家你在做什么。
如果某个语句很复杂,可以加注释告诉大家这句到底在干什么。
这样写出来的程序维护起来或者他人使用起来将非常方便。
另有一篇十分有趣的文章分享给大家:
如何写出无法维护的代码
之所以叫做程序,是因为我们所做的工作就是告诉计算机要做什么,该怎么做。
所以如果你的脑子里根本不知道这个问题该怎么解决的时候,你就更加无法写出程序。
找思路的一般方法是分解问题,然后逐个击破。
或者在特殊情况下,需要把问题转化。
分解与转化的第一步是把实际问题转化为数学问题。
这一步可能已经做好,可能没有。
如果没有,那么这一步就叫做数学建模。
绝大多数问题都可以转化为两类问题,一类是最优化问题,一类是求解问题。
如果你能知道你在最优化什么东西或者求解什么东西,问题就简单很多。
转化问题的第二步是把数学问题转化为程序。
也就是说,你要想清楚这个问题是怎么一步步实现的。
这个过程可能很简单,有现成的方法用,也有可能很复杂,还可能涉及多种转化。
比如我们经济学中遇到的求解动态最优化,经常要把连续的东西离散化。
最后,考虑怎么把你的程序转化为真实的代码。
这一步说简单很简单,因为只要你做好了以上两步,这一步是顺其自然的。
但是当然会有很多小的细节,也许这就是所谓的technique。
但是我还是觉着。
应该是debug中最常用的工具。
MATLAB的编辑器中可以很方便的实现在每一行的开头有个小横线,单击一下变成红点,然后就设置成断点了。
当程序运行到断点之后就会中断,然后会在主窗口显示K>>的标志,这时你可以输入命令查看内存情况等等。
一步步的跟踪,直到变量值跟你的预期不一样,这时你就可以很容易的找到错误在什么地方发生了。
这个方法很简单,离开你的电脑,找一个人,随便什么人,说一遍你的程序的思路,说的越具体越好。
多数情况下,你在阐述的过程中,程序的错误就会突然从你的大脑里冒出来了。
如果实在找不到就找大街上的乞讨人员吧,给他们十块钱他们应该很乐意听你说的,并且说不定还可以给你一些很好的建议,然后告诉你,十年前他们也在做同样的工作。
MATLAB心得体会
专业:
电气工程及其自动化班级:
学号:
姓名:
李博旭
电气13-21330070212
体检心得体会
年会心得体会
读心得体会
我心得体会
孝心得体会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 心得体会
![提示](https://static.bdocx.com/images/bang_tan.gif)