matlab的学习心得.docx
- 文档编号:30178075
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:20
- 大小:34.31KB
matlab的学习心得.docx
《matlab的学习心得.docx》由会员分享,可在线阅读,更多相关《matlab的学习心得.docx(20页珍藏版)》请在冰豆网上搜索。
matlab的学习心得
matlab学习体会的心得(zt)
最近在学习matlab,一直不入其法门。
从网上看到了一些大虾的经验心得,感触颇深,转贴过来,希望给初学者有一定的指引。
一)写给学习matlab的新手们 作者:
eight(八) 来源振动论坛
本人接触matlab已经有5年多的时间了,一直想写点东西,但是之前不知道放在哪里才能发挥它的最大作用,直到几天前碰上了这个论坛(有点像诸葛亮遇见姜维,哈哈)。
废话不说,我想借贵论坛宝地,写一些经验给使用matlab的新手们,当然了,老大们也可以看看,不嫌弃我写得粗糙的话还可以指点一下,先谢过了~~~~
首先我想说的是,matlab跟其他语言不一样(我用的比较多的编程语言,除了matlab就应该是c或c++了,VB和Delphi也接触过,我想版面(matlab版)大部分人也差不多),如果你抱着“把其他语言的思想运用在matlab里面”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。
所以,如果你是希望matlab作为VC的附属品,即你不想在matlab上面花太多功夫,只纯粹想用matlab来完成VC做不了或很难做成的任务的话,那么,这篇文章你也不需要再阅读下去了;如果你是希望掌握一门语言、一个工具,使它更有效为你服务的话,那么,希望本文对你有所帮助。
Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注意到这个问题,因此,for循环(包括while循环)满天飞…………..这不仅是暴殄天物(没有发挥matlab所长),还浪费了你宝贵的时间。
对此,版友MVH在他的“MATLAB小技巧”一文中也有所涉及,雷同的东西我也就不重复了,matlab的“帮助”里面也有相关的指示。
我这里想说的一点是,初学者往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++的思想。
举个例子吧,下面的代码是我的一个师弟写的,我想他接触matlab也有2、3年时间了(在此说明一下,接触2、3年并不是表示每天都会跟matlab打交道,我本人也不是,只是在一年某几个时间段里面连续使用),但是仍然会出现类似的问题:
J=0;
lt=size(imf1,2);
for(i=1:
lt)
if(abs(imf1(i))>1)
J=1;
break
end
end
上面的代码实现了一个目的――检查信号imf1(一个向量)是否存在绝对值大于1的点,这显然是基于C++的思想写出来的。
如果在matlab下面,其实用两个语句就足够了(当然,可以合并为一个):
q=find(imf1>1);
J=~isempty(q);
这样的修改带来的好处是很可观的。
又如:
forj=1:
num
imf1(start1+j)=2*li1(j+1)-imf1(start1+j);
end
这是一个对称翻折的问题,它完全可以用以下这个语句简洁表示:
imf1(start1+1:
start1+num)=2*li1(2:
num+1)-imf1(start1+1:
start1+num);
因此,如果是新手,可以先用循环(基于C++的思想)来编写代码,然后看看能否用matlab的语言(基于矩阵的思想)来改进。
当然,这样做的前提是你对matlab提供的一些函数比较熟悉才行,这些函数在matlab的“帮助”那里搜索“FunctionsUsedinVectorizing”就可以找到一些,其他的也可以找相关的书籍(没找到?
不可能,电子版总可以下载到的)
对提高matlab编程能力的方法,我想主要有以下三个:
1.查help
2.多上上论坛,搜索帖子、发帖子问人
3.阅读别人、特别是牛人的程序
当然了,正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行,不能光看。
多想、多思考、多尝试,才是正路。
最后,整理一下常用的快捷键(用【】表示)或命令:
1.在命令窗口(CommandWindow)中:
1)【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令
2)clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉
3)clear――这个才是清空当前工作区的变量命令,常用语句clearall来完成
4)【Tab】键――(转自版友心灯)在[email]matlab@[/email]看到的:
在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。
目前讨论结果是:
matlab6.5版本中,如果候选命令超过100个,则不显示。
而在matlab7以后版本中,则没有这个限制,均可正常提示
5)【Ctrl+C】(或【Ctrl+Break】)――(转自版友yangjin_ren)在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。
不过进行此操作的前提是能够激活切换到命令窗口才行,呵呵。
2.在编辑器(Editor)中:
1)【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)
2)【Ctrl+[】--减少缩进(对多行有效)
3)【Ctrl+I】--自动缩进(即自动排版,对多行有效)
4)【Ctrl+R】――注释(对多行有效)
5)【Ctrl+T】――去掉注释(对多行有效)
6)【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过)
7)【F12】――设置或取消断点
8)【F5】――运行程序
其余的例如在Debug状态下的快捷键就不多说了,自己看菜单Debug吧
累了,有时间再写吧。
希望大家多交流~~~~~~
Coming:
(以下东西都是一年前做的了,不知道能否记起,呵呵)
1)关于神经网络的――调用matlab的nntool命令后的使用问题(我做的时候没有看过其他书籍或资料,是自己闭门造车的结果,如果写之前发现其他书籍有相关介绍的话就不写了)
2)关于外部接口的――matlab与C++Builder的接口,想详细介绍如何利用matcom4.5在C++Builder中调用matlab的代码以及matcom的一些技巧。
由于我不是搞项目开发的(搞科研、搞课题的),所以对VC不熟悉,大学的时候学过一点,不过我想对于搞科研来说C++Builder就足够了,免去很多麻烦,Builder在界面设计和数据库连接上面(我只接触过这两方面)还是做得不错的。
同样,如果发现其他书籍上有类似的东西就不写了
3)GUI方面也写写吧,只是一点点心得或者体会,呵呵,这个相对简单些,篇幅相对要少些。
BroccoliBCD发表于2007-6-1919:
46
(二)发信人:
Genial(山城棒棒儿军),信区:
MathTools
标题:
matlab使用的一点儿体会(forbeginner)
发信站:
饮水思源(2003年11月08日17:
17:
48星期六),站内信件
matlab使用的一点儿体会(forbeginner)
真正接触matlab一年左右,我很喜欢上了matlab的简单的语法,易于绘制图形,gui编
程也非常容易,并且功能强大的开放式的toolbox。
因此,尽管我一直没有这方面的应用,但是我还是对
它非常感兴趣。
现将个人的matlab的一点学习体会列在这里,愿能够对大家(特别是初学者)起到一点儿微薄的作用也好。
1.help:
最有效的命令(参阅了瀚海mathtools的starrynight网友的文章)
其实,可以这样说吧,如果离开matlab软件,我想我自己是基本上什么都不会。
一遇到什么问题,通常
我的第一反应是:
help,就先说说自己对help的一些常用方法吧。
1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。
2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入
Helptoolboxname,一帮可以得到本工具箱有关的信息:
版本号,函数名等。
3)知道函数名,直接用helpfunname就可以得到相应的帮助信息。
2.seealso:
不可小瞧的关联
在用help命令的时候,可能因为我们开始估计的方向不一定完全正确,在列出的帮助信息中没有直接
给出的我们要找的东西,但是我们一定不要忽略了在帮助的最后列出的seealso。
譬如:
曾经遇到一个画椭球的问题。
刚开始我以为这个命令函数应该在graph3d中给出的(顺带提一句,
只用help的时候我们就可以看到matlab\graph3d-Threedimensionalgraphs.。
于是乎,我又helpgraph3d,很遗憾,在Elementary3-Dplots.中我没有发现画椭球的函数,但是
我发现在seealso中有SPECGRAPH.抱着试试的态度,我又helpspecgraph,^_^,这次在Solidmodeling中找到了ellipsoid-Generateellipsoid。
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定位打开也行,但是我经常采用的是直接在command窗口中用editfunname.m,就省去了定位的麻烦。
6.其他常用命令:
which,what等
which:
定位指定的函数和文件,最好带上参数-all,以便显示更加多的信息
what:
获得指定目录的m文件,mex文件以及mat文件名列表
7.各个高校bbs的mathtools版
谁都不可能什么都懂,但是永远记住这样一句话:
Twoheadsarebetterthanone.多向他人请教,多相
互讨论,这不只是在于解决matlab的问题上。
我最经常去的bbs有:
.瀚海星云([url]
.水木清华([url]
.饮水思源([url]
.紫丁香([url]
8.一些专业网站
我所知道的有:
1)[url][/url]mathworks的官方网站
2)[url]
小的辅助函数
可以下载,不过是国外的,e文和网络对来说感觉都是很不爽的事情。
3)[url]
资料的就不会不知道它,园主是东北大学的薛定宇教授,一直从事MATLAB语言及其应用研究。
4)[url]
5)[url]
6)[url]
b有关外,还有很多其他的专业的文章。
最后一条,要大胆的去试,哪怕只有一丁点儿可能。
譬如,早些时候,有朋友问我:
我用什么命令可以查找所建立网络的属性的含义,比如说:
我建立网络net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingda');想看看net.trainParam。
lr_inc属性是啥含义用什么命令查看呢?
当时,我根本连练习都没有用matlab的神经网络工具箱的东西练习过。
我helpnewff也没有结果,后来实在没有办法,就试着help参数值traingda,没有想到还居然真的就找到答案了。
还有,曾经有朋友想把waitbar的默认颜色的红色改掉,我用help没有发现可以改变其填充色的property,后来我看了waitbar.m,发现其填充色本来就不试一个可变参数,但是既然发现了是什么地方,就可以自己改变的,这都得益于matlab的开放性。
这也为我们提供了很大的灵活性(在他的基础上,我们可以做很少的变换,就自己写一个填充色可以以属性输入而改变的waitbar的)
最后,matlab只是一个很好的应用工具而已,也不像vc,delphi,vb等开发工具,最多的还是应用于算法的验证,仿真等。
我们应该的是尽可能的知道一点儿基础的,然后熟悉本专业的toolbox。
(可惜,我现在一直没有这样的实际应用机会)
BroccoliBCD发表于2007-6-1919:
46
(三)转自 SimWe仿真论坛»G01:
MatLab
自从2002年3月1日开始接触MATLAB,已经三年多了。
当初花了一个月时间,才进入MATLAB的殿堂。
那时立下了一个小小的心愿,三年里做到与高手平等交流。
现在目标基本上实现了,却找不到前进的方向。
最近在做一些反思,希望能够总结一些经验和教训,对自己,对新来者有一些帮助。
也将我的想法分享给有共同爱好的朋友,感谢这一路走来,有那么多人相伴。
一、孤独的旅程
二、学习经验
三、网络新大陆
四、第一届MATLAB研讨会
五、英雄谱
六、第二届MATLAB研讨会
七、忙乱
八、MATLAB俱乐部
九、遗憾
十、蜕变
一、孤独的旅程
刚开始学习MATLAB,基本上都是靠自学。
有一位前辈培训了一次,但是时间还是太短了。
那个时候看到MATLAB,只知道是一个很陌生的软件,还是全英文环境。
看到的第一本书,还是一本紫皮的讲Simulink的书。
后来上书店去买了一本铁道出版社的书《MATLAB6.1程序设计与实例》,真是一本好书啊,现在还是我首选的MATLAB书,不时拿在手上翻翻。
通读了这本书,才对MATLAB的概念有所了解。
因为要在界面上显示一个图像,其他人用的是一个pushbutton的CData显示图像,还能用鼠标按来按去。
我记得MATLAB的对象结构上讲了image,后来就想办法用Image显示出来这个图像。
花了三天左右搞定,这是我用MATLAB解决的第一个问题,对自己的鼓动很大。
后来又利用空闲时间,做了一个三角函数的显示模块,原希望帮助初中生学习三角函数,一直没有机会,就此埋没了我的处女作。
再之后就是买书,看书,不看help,因为英文不好。
记得有一次,要写一个界面,按钮画好了,回调函数也写了,可是程序总是运行不通。
那个程序看了几十上百遍,还是没有看出个所以然来。
没有人可以问,没有人可以帮我,心中那个苦闷啊,依然无奈。
只好硬着头皮看help,看MATLAB的sample中的注释。
总算是开了悟,发现函数结构和函数流程没有理清楚。
开始那一年多时间就是这样过来的。
面对问题,自己琢磨,翻书,不行再找help。
Google一下也没有什么有用的资料。
虽然去过Mathworks,难以找到什么好用的东西。
没有多少人可以讨论和交流,听说华为有一些博士在使用MATLAB,可是高人无缘一见啊。
黑暗中的摸索,应该也就是这样的吧。
学习MATLAB的过程是孤独的,MATLAB在软件开发语言中也是孤独的。
同路者少,知音更少。
二、学习经验
如果我在技术领域里面还有一点可以说的,那就是学习和使用MATLAB的一些方法和经验。
与很多朋友探讨过,或者传道过,也引起了一些兄弟的共鸣。
今天我想聊一些新的认识。
在与一个同事谈到如何做一个优秀的技术工程师时,我提到了八个字:
悟性、勤奋、坚持、付出。
悟性。
上小学最喜欢的一个字就是悟,以前以为悟就是一个人的慧根。
其实不是这样的,所谓悟就是想。
要保持大脑的活力,要不停的想。
除了上班的时候想,走路的时候要想,吃饭的时候还要想,睡着前再想想。
有很多事情,技术的、非技术的问题,都是可以想明白的。
只有不停的想,才能想明白,想透彻。
我走在路上的时候,经常就在想MATLAB的对象属性,所以我比谁都熟悉这几百个对象属性。
勤奋。
我这个人也比较懒惰的,但是我对自己喜欢的事情还是有一种韧性。
我对勤奋的理解是,你是否每天比别人多学习三个小时?
现在的年轻人,一代比一代聪明。
要不被别人淘汰,要超越别人,只有靠时间堆出来。
每天多学一些,多积累一些。
在别人谈小资的时候,想想一些现实的技术。
看看国外倾泻而下的标准、技术、商品,如何突围?
只有靠我们每个人的勤奋。
每当想起我们那些在国外做了七八年的竞争对手,要在中国打败他们,就只有靠时间、压力和汗水的积累。
喜欢上海的一个理由,就是这里的快节奏,可以不会让我那么懒惰。
有一些事情我想是可以值得骄傲一下的:
有半年时间,平均每天学习MATLAB到半夜两点以后;有两个除夕夜,都是在编写程序。
坚持。
做潜力开发的培训,往往要培养一个人永不放弃的斗志和信念。
搞MATLAB也是这样,涉及的领域太多,每个领域里面都缺乏足够的专家分布在你周围。
那么我们很难有机会接触到真正的高手,对我们的技术细节一一指点。
在遇到实际问题时,就只能靠自己去摸索。
常常是再坚持一两个小时,就能够解决你的问题。
最大的成就感,就在付出了极大的心血和耐心,才取得一个艰难的小胜利。
(真的做完一件事情,也许那感觉就是一个字:
累)印象很深刻的一件事情,有一次SCIE与我聊起一个混合编程的问题,喋喋不休的讲完了第七种方案(因为好几个我没有听懂),依然不能解决问题,又想到了第八种方案。
如果没有坚持,一般人也就能够想到第三步、第四步,如何能够达到圣人的境界?
付出。
这也许是一个过时的话题,但是我坚信,付出依然能够给我们带来可观的回报。
付出,不是今天老板给了你薪水,你可以继续为他工作一个月。
我所理解的付出,是每天为公司、国家多工作两个小时。
有一些规则是显性的,有一些规则不是那么容易发现的,是潜规则。
我不是倡导无私,我只是希望通过自身的努力,提高公司的竞争力,提高民族的竞争力。
在这个过程中,也相应的提高了作为个体的技术工程师的竞争力。
现代的竞争是激烈而残酷的,只有熟悉地缘政治的人,才能有深刻的理解。
作为MATLAB的爱好者,我希望能够为这个群体做一些事情。
没有师傅,就寻求一些高手的帮助。
找不到高手,就寻找朋友。
没有朋友感兴趣,就培养这个群体。
土壤厚重了,我们这些生物才能生长得更茂盛一些!
三、网络新大陆
有一次在一本杂志上看到,CSDN是中国最大的程序员论坛。
我就上去逛了几回,果然人气很高,无奈网速太慢,经常被挤了下来。
遗憾的是,发现MATLAB方面的资料太少。
虽然也有人振臂高呼创建MATLAB专区,无奈云集者寡,打不动高层。
在数据结构板块遇到了几个朋友,其中SCIE介绍我到simwe看看。
哇噻,果然是一个新大陆!
竟然有一个MATLAB板块,好多页的帖子。
兴奋得睡不着觉,连着看了好几个半夜。
这里水太深,潜不到底。
干脆就搜索其他的BBS论坛,从hr,到MATLAB大观园,动力学,再到研学,等等。
所有的论坛的帖子,能看的都看了一遍,有的一晚,有的一周。
这一年多的苦闷一扫而光,原来世界上还要这么多同类!
我是2003年8月份注册simwe的,正式开始我的网络技术交流。
人多话题多,可以聊很多东西。
比如最关心的接口,GUI编程,矩阵,图像等等,都有人涉及。
也聊一些学习方法,基础知识,帮人答疑解惑。
与几任版主也渐渐熟悉起来,开始帮忙一起培养simwe严谨的风气。
鼓励潜水,杜绝潜水,这也许算是网络界的一大奇观了。
越来越多的朋友,了解了这个论坛,开始逐渐聚集起来。
个体总是孤独的,身边的人难得对MATLAB感兴趣,有感情的人更不多。
但是这个群体却有很多共同语言,相同的诚恳、努力和成就感!
四、第一届MATLAB研讨会
网络的交流总是有限的,很多人闻其名,难见其面。
于是就萌生了一个想法,大家搞一个聚会,一起聊聊。
与simwe坛主电话沟通了一下,他也立即叫好。
开始串联网络上认识的朋友,yqzeng,bigrice,亚丁等等。
大家一拍即合,几经讨论,决定搞成一个技术研讨会。
第一次筹备会议是在上海交大校内的,坐在纪念碑旁的草坪上举行的,因为大家都忙,越晚就越忙,时间就定在2004年5月16日(星期日)。
我们把研讨会的题目定为“第一届MATLAB应用技术上海爱好者研讨会”,一则心虚,限在上海;二者也希望以后形成一个惯例,有第二届、第n届。
几个人分工合作,就这样开始筹备了。
没有赞助,就AA制。
没有人讲,我们自己上了三个。
没有广告,就利用网络宣传。
各大论坛,各个高校,广发英雄贴。
5月16日,我们在上海那遥远的西北角,同济沪西校区集合了。
上午还在匆匆忙忙的做最后的准备工作,编排会议日程,打印签到表。
用一个字形容,就是乱,没有经验。
还好下午一点半总算是到了,人也来了一些,不多,不少,15个。
最让我们激动的时,Genial从合肥远到而来。
周恒毅为我们演示的上海南站的建筑结构图,在风中的摆动,非常漂亮,
现在想起第一届MATLAB的研讨会,虽然历历在目,却又不知该如何详细描述。
虽然是清一色的男生,却没有冷落现场的气氛。
因为人少,我们买了很多瓜果零食,就搞成了茶话会。
大家像一群野外偶聚的蚂蚁,交头接耳,交流化学信息。
那天使用频率最高的一个词,就是感情,大家都在相互传递对MATLAB的深厚感情!
虽然在夜幕中结束,还有部分人恋恋不舍。
后来制作的纪念光盘,四处扩散,像一个招牌,开始持续扩大研讨会的影响!
五、英雄谱
在这个领域里面浸润久了,自然不自然就认识了很多英雄人物。
自然的属于相互交流,次数多了就熟了。
不自然是慕名前往,刻意找个理由结交,也能如愿以偿。
在第一届研讨会的ppt里面也提到了一些网络英雄榜。
有一些人是很熟悉的,希望给大家指引一个地图,可以去找到自己的偶像。
薛定宇,开创了MATLAB大观园,很多高手早年都是出自他的门下。
公认对业界贡献很大,因为他写了好多本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 学习心得
![提示](https://static.bdocx.com/images/bang_tan.gif)