| 查看: 3579 | 回复: 9 | ||||||||
| 当前主题已经存档。 | ||||||||
dnp荣誉版主 (知名作家)
小木虫浪子
|
[交流]
[原创]matlab经验之谈(很简单,大家有用采之)[已搜索无重复]
|
|||||||
|
在这个版块,在理工数学版已经有很多的关于matlab基础知识的资源,但都是一些非常简单的书籍(包括我的),如果初学,看了半天也不知所以然,而对于有基础者,这些根本就可以不用看!因此建议初学者如果真的想学matlab的话,还是在书店买一本好一点的基础书。我原先看的是精通matlab7.0,Duane Hanselman 和Bruce Littlefield写的,朱仁峰翻译,清华大学出版社出的,觉得它就还可以,很有深度也很详细。 其实matlab就是一个计算软件,它的计算能力非常强,但是其它的各种编程手段,如文件操作,界面操作等就不如java,c++等语言,所以对于使用matlab,很多时候只是需要调用matlab里面的函数与工具箱,而不用你进行编程,这就是matlab的优势。 不过这里需要注意的是:在作数值分析的时候千万不要指望matlab能够给你把整个公式给推导出来! 对于新手如何学习matlab我在这里就不费口舌了,jinnengzhi的转贴:写给matlab新手的几句话(http://muchong.com/bbs/viewthread.php?tid=684144)写的很牛。 在matlab里面,有很多基础的函数,也有很多工具箱,matlab之深,也在于此。现在matlab可以在各个计算行业有非常广泛的应用,同其具有非常丰富的工具箱与函数是分不开的,而对于我而言,现在也只是一个大海里的小鱼,广阔的世界我也只是管中窥豹般。 在当前的各种帖子中,matlab的问题无非是数据文件的处理与计算。对于数据文件,从其他格式的导入matlab中三种方法: 1. 在matlab界面的工具栏中有file工具,其下拉菜单中有一个import data选项,你可以直接从外部的文件中导入你所需要的数据文件,格式非常多,一般的如:(text file).txt, .dat;(excel file).xls, .csv, .wkl;(image file).jpg, .tig等。此种方法优点是非常方便快捷。但是对于用这种方法导入的数据文件,电子表格中的必须全部是数值,而没有字符串等其他格式的内容;记事本即ascii码纪录的数据没有限制,可以自由导入;对于像我们平时Gaussian等软件计算的结果文件,如.out等,建议不要用此种方法导入,因为里面字符串过多,matla无法判断格式以及你的数据内容。这些文件,是ascii码格式的但是后缀不是text形式应该如何导入matlab中?这里我建议用第二种方法。 2. 在matlab中有专门读取ascii码编写的文件的命令:fopen,可以用这个命令打开一个文件,格式不限,二进制或者ascii皆可。如果是二进制,就用fread命令;如果是ascii,则用fgetl或者fgets命令。具体使用格式见matlab中的help文档。这种方法的优点是对于像Gaussian等的输出文件中有用信息的读取很方便,可以提取你需要的信息,而不用对着那么长的输出文件寻找半天。但是对于这些命令,必须对matlab有一定的了解,对文件格式有一定了解;同时你编好了一个程序,想提取有用信息,则文件里面你想要信息的位置必须得有一个特征字符串,或者标识符,并且这些字符串或者标识符在所有同种格式的文件的同一位置必须出现,否则此程序只能适用此一种类型的文件。 3. 另外一种我想最常用的就是用load命令了,非常简单,只要在当前目录下,load+文件名即可,而且对于二进制文件,load命令非常实用。但是load命令有非常多的限制,如数据文件中是纯粹的数值,没有其他的字符串等信息。这种对于text文件就不是很适合了。如果是二进制文件,matlab定义的.dat, .avi, .cdf等,如果我们平时实验数据也是这些格式,load命令无法识别,建议用工作站转成.txt格式或者.cdf(cdf需从网上下一个读取器)。在处理而对于matlab自己定义的数据格式.mat,却非常有效。 另外对于数据处理,如果只是进行平时很小的运算,则可以直接在matlab的命令窗口中实现,用一个循环或者利用矩阵运算方法计算。然而如果数据非常多,则用matlab直接进行处理非常不方便,而且很慢!因此碰到这种情况,或者分段处理,或者另寻他路。在这里,线性代数的知识就显得非常重要了,因为如果你编一个程序,随便在哪个地方都用标量循环计算,除非你非常有耐性,否则就得等到你想砸电脑了。一般现在的数据都是采用稀疏矩阵(Sparse matrix)储存的,当你进行运算的时候,也尽量采用矩阵或者是向量的形式进行运算,因为matlab有自带的加速运算功能,如果不用,岂不浪费???而且,matlab中矩阵运算这方面的函数非常多而且丰富,一般都能够得到你想要的结果。对于这些函数,google,baidu中已经有非常多的介绍,而且详细,因此不予详细介绍。 如果你心中有算法,有公式,知道怎么做就不要在那里想应该怎么才能使我操作最简单,怎么才能使我写程序的时候能够将字母写得最少!有时候很简单的数据体系,两条命令就解决了,而且操作非常简单,也许你用最笨的办法所花的时间还没有你想的时间长。 对于新手而言,模仿别人的写程序方法是非常有必要的,因为有时候你的算法和别人的一样,但是效果却没有别人好,为什么?是你有些方面没有考虑到?还是你对你的编程平台不熟悉而浪费了许多资源?还有,别人对解决当前体系的思路,有时候我们程序写得非常长,别人只有两句话就搞定了,而且效果非常好,怎么回事?当我们学编程的时候就得好好想想这些问题,这样下次在写程序的时候我们就会尽量考虑周全,尽量选取最优的方案。我在写一个GUI界面的时候,当时对GUI界面一窍不通,老板却要我在一个星期内完成。实在没办法,就拿师兄写的一个未完成的程序,一条一条命令的看,看命令,看思路,后来就把一个显示LC-MS-MS数据的窗口给编出来了,按时完成任务(一个星期内完成,后来老板说是要我在5天内搞定 ,也算是完成了)。学习matlab要多问,多学,看见好一点的命令,看见别人用我没有用过的命令,我就要先help一下,看这个命令能做什么;然后自己试着用这个命令,完成一些工作,即使你目前用不到,也可以先留存在脑海中,以备以后之用。 参观当前网络上matlab的论坛,有些QQ群,可以加入的就要加入,看那些高手是如何解决别人的命令的,也许你知道这个问题的答案,但是另外一个人提出的解法,使用的命令却比你的好,这就得需要你学习了。 对matlab不要盲信,因为有些问题matlab解决的并不一定比excel,origin等专门的数据处理软件好,不要别人看这个好久采用这个,要用你最熟悉的手段,最简单的方法解决你的问题。像平时的加减乘除,平方开方,excel里面就有现成的函数和命令,然后鼠标下拉一下,所有数据全部搞定。所以对matlab如果不熟悉,而其他软件稍微熟悉一点,建议不要用matlab。毕竟自己不熟悉的东西,当旁边又没有人帮助的时候,错误多多,心烦意乱,人不好,结果更不好! |
» 收录本帖的淘帖专辑推荐
matlab | 外语学习资料2013 | MATLAB | 励志 |
matlab |
» 猜你喜欢
写了一篇“相变储能技术在冷库中应用”的论文,论文内容以实验为主,投什么期刊合适?
已经有6人回复
带资进组求博导收留
已经有10人回复
最近几年招的学生写论文不引自己组发的文章
已经有11人回复
需要合成515-64-0,50g,能接单的留言
已经有3人回复
中科院杭州医学所招收博士生一名(生物分析化学、药物递送)
已经有3人回复
临港实验室与上科大联培博士招生1名
已经有8人回复
想换工作。大多数高校都是 评职称时 认可5年内在原单位取得的成果吗?
已经有4人回复

cuihang
铁杆木虫 (正式写手)
VASPer
- 应助: 0 (幼儿园)
- 金币: 7507.1
- 散金: 17
- 红花: 2
- 帖子: 697
- 在线: 78.5小时
- 虫号: 447551
- 注册: 2007-11-01
- 性别: GG
- 专业: 凝聚态物性I:结构、力学和

2楼2008-01-16 14:27:11
quantumoptics
金虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 332.5
- 散金: 300
- 帖子: 567
- 在线: 83.1小时
- 虫号: 479225
- 注册: 2007-12-14
- 专业: 光学
3楼2008-01-17 10:50:32
4楼2008-01-17 11:42:25
davin
木虫 (著名写手)
一只来自东北的大虫
- 应助: 6 (幼儿园)
- 贵宾: 0.549
- 金币: 4293.9
- 散金: 676
- 红花: 59
- 帖子: 1341
- 在线: 718小时
- 虫号: 420443
- 注册: 2007-07-10
- 性别: GG
- 专业: 传热传质学
5楼2008-04-01 16:10:19

6楼2008-04-15 21:02:19
FLY_Phoenix
荣誉版主 (职业作家)
小木虫归隐传道士
- 应助: 12 (小学生)
- 贵宾: 0.9
- 金币: 6070.7
- 散金: 311
- 红花: 16
- 沙发: 1
- 帖子: 4257
- 在线: 229.4小时
- 虫号: 368622
- 注册: 2007-05-12
- 性别: GG
- 专业: 金属结构材料
- 管辖: 金属

7楼2008-04-27 14:57:15
sctc2007_g
金虫 (小有名气)
早日成功
- 应助: 1 (幼儿园)
- 金币: 1515
- 散金: 77
- 红花: 1
- 帖子: 298
- 在线: 111.4小时
- 虫号: 562675
- 注册: 2008-05-24
- 性别: GG
- 专业: 控制理论与方法

8楼2008-06-24 19:07:00
wcha
木虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 2892.3
- 红花: 4
- 帖子: 701
- 在线: 101.1小时
- 虫号: 123841
- 注册: 2005-12-05
- 性别: GG
- 专业: 生物大分子结构与功能
9楼2008-12-13 14:16:03







,也算是完成了)。
回复此楼
