MATLAB的专家,你怎么学习的?建议初学者/中级用户吗?
679(30天)
显示旧的评论
接受的答案
Stephen23
2015年7月6日
编辑:Stephen23
2021年12月21日
我拒绝“专家”的标签,但这是我的两个美分呢:
MATLAB具体:
- MATLAB具有强大的功能,很少的编程语言:可读文档。使用它!使用你最喜欢的搜索它互联网搜索引擎。通过实践浏览它内容左边(这都是超链接)。理解它是如何按主题分类。尝试的例子。使用帮助定位相关函数和建议如何解决特定的问题。
- 注意,在线文档当前MATLAB版本:你安装MATLAB版本可能不同,所以最终你应该参考安装帮助你的安装MATLAB版本。
- 阅读的帮助每一个功能和操作使用,无论多么微不足道的你认为操作。一半的问题,我们回答在这个论坛上得到解决通过阅读的文档功能/操作员用户已经使用!
- 学习使用调试工具。这些都是必不可少的。了解它们是如何工作的,他们做什么,然后练习使用他们!对于开始调试,最有用的命令是:dbstop如果错误
- 学习之间的差异数组和矩阵运算计算,否则你只会胡说,你不知道为什么。如果你不做线性代数你可能需要数组操作。
- 了解逗号分隔列表,简单的方法来使用它们。
- 了解索引MATLAB的超级大国之一。在许多情况下逻辑索引是最简单和最有效的(但不同的索引都是有用的在不同的情况下)。
- 注意所有的代码警告,错误消息、强调和技巧MATLAB编辑器显示。不要忽略这些消息。
- 良好的MATLAB编程习惯从一开始就学习,因为生命太短暂un-learn坏习惯!这意味着:评论你的代码,使用一致的格式,写帮助(H1线)在每一个函数,通过变量正确地使用输入检查,从来没有使用eval(或assignin,函数宏指令等)等。
- MATLAB的博客是一个很好的灵感的源泉和想法。罗兰美国舒尔的博客是一座伟大的思想,一个名副其实的快乐阅读。
- 看看别人的代码文件交换(FEX)。注意,在评论往往比评级更有用……你很快就会知道谁的评论尤其值得关注。
代码设计:
- 写的函数,而不是脚本。脚本是好去玩弄,但不是真正的工作。
- 使向量化代码编写代码时你的第一选择,留下那些丑陋的低级循环你…理解为什么向量化代码是美丽的,它可以使你的代码更有效和容易理解。
- 当然,当循环是必需的,永远preallocate数组在循环
- 有重要的方面写快速和高效的代码。使用它们。
- 例如,使用绝对或相对filepaths而不是缓慢、难以调试cd。
- 在filepaths,使用“。”指当前目录(而不是慢松材线虫病或cd)。
- 在filepaths,使用“. .”引用的母公司任何文件夹中。
- 不要使用如果操作部分向量/矩阵,最有可能你应该使用逻辑索引。
- 通过变量可靠使用输入/输出参数和不要使用全局变量或assignin吗。如果你需要传递大量的值(如模拟参数)然后把它们变成一个结构并通过。
- 指所有图形对象(人物,轴、线等)使用显式处理引用(如使用父属性)。这使得绘制和处理图形健壮和可预测的。不要认为当前图/轴等将是您的代码需要访问。
- 不要强迫元数据(如日期、时间、指标、测试参数、等)为变量名和字段名:元数据是数据,因此将它作为数据存储在一个数组。
- 使用潜艇替换成一个值符号表达式和评估。不要使用eval要做到这一点,这不是正确的工具工作!
一般建议:
- 假设每个脚本和函数你写是给别人…给他们留下深刻印象!
- 彻底测试所有。检查每一行当你写。它真的你认为这是做什么?许多初学者来这里寻求帮助,因为他们只想到他们想要做他们的代码,但实际上从来就不愿去检查他们的代码是做的事情。代码不能读取你的思想。
- 让一组测试用例和收集所有的实例代码编写的时候,失败,再加上所有的边界情况和每一个类别,它需要处理。你不会后悔这样做。
- 问题分解成部分分别,解决了部分。使函数的代码,需要重复:这允许代码重用,和bug修复在一个位置。快速测试脚本都是伟大的一个想法,但功能更强大的东西将用于超过一天。
- 思考你在做什么:真的认为。要解决的问题是什么?是什么真的这个问题?如何解决?用什么方法呢?读聚的优秀作品如何解决它。
- 不要卡相信你找到了最好的解决方案……可以有一个更好的解决方案等待指日可待,这可能就需要一个新的视角,再形成的问题,或轻微的数据重排。保持开放的心态。
- 练习!挑战自己与任务你想解决,或参加onlne代码挑战或教程。
参见:
更多的答案(12)
乍得格林
2015年7月6日
我学到很多通过询问和回答问题的论坛。我可能了解更多比当我问当我回答问题。
- 我总是从一个语法部分。这就是我不得不问自己,“用户如何尝试使用这个函数?”和“什么是最简单、最直观的选择函数可以吗?”
- 接下来描述部分。这就是我描述中列出的不同选项的语法部分。这一步迫使我思考完全功能是做什么,为什么。
- 节的例子是大学习的机会。编写一套好的例子的过程符合四责任当你会认为所有的方式功能可以使用,你会认为你的函数应该的新选项,你会看到你的函数的方式会更加用户友好。如果你把例子强调每一个不同的方式可以使用函数,运行这些简单的例子将是一个错误检查代码的好方法。
我相信,最好的方法是成为一个好的程序员写好文档。教学是最好的学习方式,是教学和写作良好的文档记录。你不学习很多技巧当你写文档,但你学习如何思考问题,和你的直觉如何让代码更高效和更用户友好。用户友好的你的代码越多,越凌乱的用户的心,你会明白自己的代码越多,效率越高你的代码会,更可重复你的科学。
沃尔特·罗伯森
2015年7月6日
我没有阅读任何书籍MATLAB。
我主要是看很多帖子在MATLAB Usenet新闻组,comp.soft-sys。matlab。不多久,问题重复,一个可以开始回答别人基于前一个学会了什么。通过阅读足够的问题和答案从其他人,和一些实验,和阅读文档,可以学习到很多东西。
必须上下文中理解我的回答,我已经是一个非常有经验的程序员,当我开始使用MATLAB, MATLAB是“更多的”添加了一些有趣的特性。类和并行编程等可能性,少一个有经验的程序员,对语法和学习更多关于思考编程的新方法。(但是有经验的程序员可以有点化石在他们如何思考编程中,所以它可以
很多
实践学习全新的方法。我从来没有真正“有”面向对象编程,例如)。
约翰D 'Errico
2015年7月6日
像沃尔特,我学会了程序在旧语言——主要是Fortran和APL。对编程这教会你不错的概念,但是Fortran等语言可以适得其反,如果他们让你写循环的习惯。本我想象,C还在,虽然我不知道,因为我几乎不能拼写C,更不用说写了。(Fortran的较新版本允许数组操作,更容易编写代码的方式,和更好的移动MATLAB)。
不过,关键是你可能需要学习一种新的编程风格,考虑操作整个数组,而不是单个元素操作封装在循环。这需要一些练习。
学习MATLAB,我建议选择一个你感兴趣的问题,并解决它。你可能会开始科迪的问题,但我建议越来越像Project Euler问题更有趣的问题。他们中的许多人在MATLAB完全可以解决的。(我已经做了几百个在MATLAB中,所以我知道这是真的。)
当你进步技巧,你也可以尝试挑别人的代码,发现在文件交换。我有50 +工具FEX为例。选择一个简单的例子,看我是如何写的。这可以教会你东西不同的编程风格,尤其是如果你看FEX其他作者的工作。
当然,你可以通过阅读学到很多论坛。不过要小心。一个过滤器适用于你所看到的,因为任何人都可以回答一个问题。(包括我!)思考你所看到的,并决定是否对你们有帮助。
亚当
2016年3月3日
编辑:亚当
2016年3月3日
当时我没有注意到这个问题(或我想也许我做了,但斯蒂芬的回答很全面的至于建议,我感觉不需要添加任何东西)。
给一个答案在一个更个人的注意,我已经开始在Matlab ~ 9年前。当时我还是一个新手的c++程序员,相当新鲜的计算机科学博士学位,已经提供了一份软件工程师的工作,但主要是为了我成为研究工程师,我现在——即。我做一些研究,想出很多如果思想,实现作为原型,并希望它们足够好为我们的公司投入我们的主要软件。我专家软件工程师和专家研究人员,我只是很擅长结合一分之二有用的方式。
Matlab工具,我给做大部分的研究,尽管多年来我这样做同时也长期在c++编程。当我开始我甚至从未听说过Matlab。到今天我从来没有在一个Matlab课程或进行任何形式的官方培训,我刚刚学会了在工作中,继续这样做。
现在我想说我的第2层专家如果我们接受,人们喜欢斯蒂芬,沃尔特,乍得,约翰D 'Errico顶级专家。我有一个好深度等领域的知识我已经使用,能够提供的帮助和建议,但我还是从中学到大量人们喜欢那些名字和其他人在同一时间通过浏览这个论坛。
我开始生产原型演示了一个任务来学习至少一个新事物在Matlab与每一个新的原型我创建并总是喜欢软件工程在Matlab语言设计方面。经过多年的工作在gui我们开始开始构建更加复杂的工具和多个交流窗口,等。在这一点上我决定是时候去学习
Matlab OOP
这是一件容易的事。我完成了一个2周的项目使用OOP首次用更少的时间比我的老板预期它采取不知道我学习一个全新的编程方式。这是一个最好的Matlab我已经做了决定。现在> 95%的我写的代码是面向对象,我相信我们的代码库是大大更好了,飞跃。
至于其他东西,除了学习我通过实验和优秀的文档开始访问这个论坛。从一开始我决定至少要给我“拿”所以我开始回答问题之前,我先问我。我发现我有很多知识,可以传递给他人,这样,当别人说,我学习了大量。这是很重要的,因为我做全职工作,同时帮助别人很好我只花费工作时间这样做,因为我学到很多东西,提高了自己的编程太所以我的雇主获得。
最后,两个最大的事情帮助我学习Matlab:
- Matlab命令窗口,使用它!实验与语法和尝试的东西,因为它是很容易的
- 调试器——盟军命令窗口调试代码,能够发挥在命令行中一个调试会话是非常宝贵的。
2的评论
约翰D 'Errico
2017年3月30日
沃尔特使一个很好的观点。我已经把我的想法写几百手桥上我了。MATLAB,但经常一样困难。我发现在一个明确的写出我的想法,有凝聚力的方式,以便其他人可以跟随他们,这迫使我积极思考的问题。在我明确概念,否则略模糊。
史蒂文的主
2020年5月1日
编辑:史蒂文的主
2020年5月1日
问两个问题,可以有用在编写一段重要的代码是“我试图解决什么问题?”和“什么步骤我需要做什么才能解决我的问题吗?”
有时当我编写代码我会开始只是一群评论清单的步骤或一系列的函数调用(没有身体,只有名字。)这是在我的心灵里修复一系列步骤,确保我不会遗漏任何事情。一旦我有一般的工作流程,我确定每个步骤需要接收输入和它所需要的其他部分工作流程。这样就完成了每个函数的签名。然后我可以实现每一步的功能,独立于其他的工作流。这限制了多久我必须回到一个已经实现的功能和改变它,以满足以后功能的要求。
你可能会通过短,节省时间可能神秘的函数或变量名。我建议抵制这种诱惑,除非可能使用的变量只有很短的时间内。所以用单字母变量名像t、y是一个匿名函数的输入参数可能是好的。
odefun = @ t (t, y)。* y;
任何的重复使用,我尽量选择函数和变量名称,使我的代码看起来或多或少像英语句子或短语描述函数的目的,变量和/或函数调用。选项卡完成可以帮助限制输入你需要做多少。考虑一个例子:
data = readDataFromFile(文件名);
不知道任何关于身体的功能,你可以得到一个很好的理解它,大概它返回什么。
data = readDataFromFile(文件名);
cleanedData = removeOutliersAndMissing(数据);
这看起来像两个合理的步骤分析数据的过程中从一个文件中。
调试工具,代码分析器,和其他工具来帮助你解决,避免问题在您的代码中已经提到,他们很好的工具在你的工具箱。有一些人可能是顺便提到将是有用的,特别是对于更大的项目。
布雷特Pantalone
2021年1月28日
需要一点时间去精通MATLAB,特别是如果你是来自传统的编程语言。我同意一切说在前面的答案,但我想强调的一些真的帮了我个人的事情。
- 了解MATLAB使用向量和矩阵,各种方法你也可以使用下标访问和切片。学习如何使用一个逻辑面具来过滤一个向量或矩阵的元素。
- 学习操作进行向量化。当你发现自己编写一个FOR循环,使用向量操作试图消除它。通常你可以这样做,使代码更快和更容易理解。
- MATLAB的帮助系统是最好的。使用帮助> <命令的命令语法的提醒,和“医生<命令>”读到使用细节和可选参数。
- 不要重新发明轮子。MATLAB包含大量的内置函数,可以处理多种类型的问题,更不用说所有专门的工具箱。
- 不要试图第一次写完美的代码。得到一些工作,验证你的结果,然后如果需要优化它的大小和速度。
- 慷慨地使用注释文档的代码。即使今天一些似乎是显而易见的,一段时间后,已经过去了你会发现自己在想,“到底是我想做的吗?”Writing good comments saves time in the long run.
- 把问题分成小块,写函数而不是大的脚本。这有助于提高代码的架构,使它更容易重用,调试和共享代码。
- 看别人的代码有助于学习和理解MATLAB的编程习语和最佳实践。检查文件共享部分的具体问题的解决办法。金宝搏官方网站
- 最后,MathWorks问答论坛有很多有用的信息。但是你已经知道。
好运!
哈维尔
2021年9月16日
编辑:哈维尔
2021年9月16日
你好,我不是一个Matlab决不专家。我一直在使用Matlab大约两年了。
东西也真的帮助我寻找其他的事情,我可以使用Matlab,能够让我的工作流程更有效率。
例如,当我在.tex文档(这是非常用于工程大学),而不是自己的表,可能需要大量的时间,寻找一个函数,可以让它给你。
同时,尝试使用他们的个人proyects(管理不同格式文件),或者proyects不是必要的工程的。
阅读一些书籍和看课程如果你开始也是有用的。
同时,试着问和回答问题的Matlab回答论坛,你可以学习学习不同解决别人的问题,然后在你自己的方式试图解决这些问题。金宝搏官方网站可能会有一些困难的,但也有一些具有挑战性的足够的。
同样,如果你理解错误出现在命令窗口,我认为编码将会容易得多。
0评论
Sulaymon Eshkabilov
2021年7月6日
真正伟大的点在实践和理论方面如何在MATLAB环境中学习和掌握编程。我的学习经验的MATLAB和Simulink有点不同于上面的重点。金宝app我的大学期间,我利用MS Excel和Visual Basic编程MS Excel在大多数工程和数值分析类。然后我挑战自己做我所做的一切在MATLAB的MS excel和Visual Basic编程。
后,我要求我的研究员同事执行所有仿真和建模的问题我们在MATLAB和Simulink环境中,找出解决方案如果有任何的差异。金宝搏官方网站金宝app这些挑战是很有趣,有时挫折由于简单(“现在我们称之为”)或愚蠢的错误如俯瞰着解算器类型(即固定步解算器和变步解算器)或错误容忍(“RelTol”、“AbsTol”)或执行仿真软件模型与MATLAB的工作区中未定义的变量。金宝app一块来仿真软件模拟人们如何携带所有变量及金宝app其值以及模型是定义所有变量和它们的值:模型资源管理器- > - > InitFcn回调
正如上面发现的被别人,“熟能生巧!”。
一个伟大一生的教训,在学校我的数学老师教是解决任何问题至少有两个或两个以上的不同的方式。这种做法我申请了在MATLAB解决各种问题,并行仿真软件,还帮助我学习编程在MATLAB和Simulink的许多不同的特征。金宝app
我的另一个练习,我发现非常重要在学习MATLAB / Simulink是解决具体工程项目设计和振动控制的动力学问题,图像分析等。金宝app
最后但并非最不重要的是通过帮助别人解决他们的问题和教导别人可以获得大量宝贵的经验包括MATLAB / Simulink软件包的新特点及其工具箱。金宝app
1评论
马里奥buchele
2022年9月22日
首先,它可以压倒开始使用Matlab,因为如果你不熟悉,这个概念是完全不同于最常见的工具,工程师使用现在:“出类拔萃”。所以,我建议familir平台,做一些免费的Matlab斜坡弯道MathWorks提供的教程。
之后,试图强迫自己使用Matlab一切:从简单的计算,情节曲线,分析数据……,避免使用Excel。找到的例子,类似的问题在论坛或谷歌。我总是找到一个类似的程序或函数编码之前,我学到很多东西。和谷歌需要合并的任何函数。最有可能的Matlab函数已经你的问题,和Matlab帮助文件是非常漂亮的和完整的。
这需要一些时间,但最后,这更值得比使用Excel为你的工作!
希望这可以帮助!