MATLAB的专家,你怎么学习的?建议初学者/中级用户吗?

679(30天)
社区很有帮助,但我真的无能为力,我无法找到适当的方法代码,也没有发现代码的问题我已经写上了。我读过很多书在MATLAB,主要是与科学和工程应用。任何建议来改善将不胜感激。谢谢。
7评论

登录置评。

接受的答案

Stephen23
Stephen23 2015年7月6日
编辑:Stephen23 2021年12月21日
我拒绝“专家”的标签,但这是我的两个美分呢:
MATLAB具体:
  • MATLAB具有强大的功能,很少的编程语言:可读文档使用它!使用你最喜欢的搜索它互联网搜索引擎。通过实践浏览它内容左边(这都是超链接)。理解它是如何按主题分类。尝试的例子。使用帮助定位相关函数和建议如何解决特定的问题。
  • 注意,在线文档当前MATLAB版本:你安装MATLAB版本可能不同,所以最终你应该参考安装帮助你的安装MATLAB版本。
  • 阅读的帮助每一个功能和操作使用,无论多么微不足道的你认为操作。一半的问题,我们回答在这个论坛上得到解决通过阅读的文档功能/操作员用户已经使用!
  • 学习使用调试工具。这些都是必不可少的。了解它们是如何工作的,他们做什么,然后练习使用他们!对于开始调试,最有用的命令是:dbstop如果错误
  • 学习之间的差异数组和矩阵运算计算,否则你只会胡说,你不知道为什么。如果你不做线性代数你可能需要数组操作。
  • 了解逗号分隔列表,简单的方法来使用它们
  • 了解索引MATLAB的超级大国之一。在许多情况下逻辑索引是最简单和最有效的(但不同的索引都是有用的在不同的情况下)。
  • 注意所有的代码警告,错误消息、强调和技巧MATLAB编辑器显示。不要忽略这些消息
  • 良好的MATLAB编程习惯从一开始就学习,因为生命太短暂un-learn坏习惯!这意味着:评论你的代码,使用一致的格式,写帮助(H1线)在每一个函数,通过变量正确地使用输入检查,从来没有使用eval(或assignin,函数宏指令等)等。
  • MATLAB的博客是一个很好的灵感的源泉和想法。罗兰美国舒尔的博客是一座伟大的思想,一个名副其实的快乐阅读。
  • 看看别人的代码文件交换(FEX)。注意,在评论往往比评级更有用……你很快就会知道谁的评论尤其值得关注。
代码设计:
一般建议:
  • 假设每个脚本和函数你写是给别人…给他们留下深刻印象!
  • 彻底测试所有。检查每一行当你写。它真的你认为这是做什么?许多初学者来这里寻求帮助,因为他们只想到他们想要做他们的代码,但实际上从来就不愿去检查他们的代码做的事情。代码不能读取你的思想。
  • 让一组测试用例和收集所有的实例代码编写的时候,失败,再加上所有的边界情况和每一个类别,它需要处理。你不会后悔这样做。
  • 问题分解成部分分别,解决了部分。使函数的代码,需要重复:这允许代码重用,和bug修复在一个位置。快速测试脚本都是伟大的一个想法,但功能更强大的东西将用于超过一天。
  • 思考你在做什么:真的认为。要解决的问题是什么?是什么真的这个问题?如何解决?用什么方法呢?读聚的优秀作品如何解决它
  • 不要卡相信你找到了最好的解决方案……可以有一个更好的解决方案等待指日可待,这可能就需要一个新的视角,再形成的问题,或轻微的数据重排。保持开放的心态。
  • 练习!挑战自己与任务你想解决,或参加onlne代码挑战或教程。
参见:
19日的评论

登录置评。

更多的答案(12)

乍得格林
乍得格林 2015年7月6日
我学到很多通过询问和回答问题的论坛。我可能了解更多比当我问当我回答问题。
一件事真的加大了我的技能,是发展的习惯 正确记录我写的代码 。我通常花两倍时间编写文档和我一样写的函数,但我相信这是值得的。好的文档的好处是多方面的:
  1. 我总是从一个语法部分。这就是我不得不问自己,“用户如何尝试使用这个函数?”和“什么是最简单、最直观的选择函数可以吗?”
  2. 接下来描述部分。这就是我描述中列出的不同选项的语法部分。这一步迫使我思考完全功能是做什么,为什么。
  3. 节的例子是大学习的机会。编写一套好的例子的过程符合四责任当你会认为所有的方式功能可以使用,你会认为你的函数应该的新选项,你会看到你的函数的方式会更加用户友好。如果你把例子强调每一个不同的方式可以使用函数,运行这些简单的例子将是一个错误检查代码的好方法。
我相信,最好的方法是成为一个好的程序员写好文档。教学是最好的学习方式,是教学和写作良好的文档记录。你不学习很多技巧当你写文档,但你学习如何思考问题,和你的直觉如何让代码更高效和更用户友好。用户友好的你的代码越多,越凌乱的用户的心,你会明白自己的代码越多,效率越高你的代码会,更可重复你的科学。
在我看来,成为一个更好的Matlab编码器的最好办法是学习和使用 发布 特性。语法、描述的例子。为你写的一切,即使这只是为自己。
3评论

登录置评。


沃尔特·罗伯森
沃尔特·罗伯森 2015年7月6日
我没有阅读任何书籍MATLAB。
我主要是看很多帖子在MATLAB Usenet新闻组,comp.soft-sys。matlab。不多久,问题重复,一个可以开始回答别人基于前一个学会了什么。通过阅读足够的问题和答案从其他人,和一些实验,和阅读文档,可以学习到很多东西。
必须上下文中理解我的回答,我已经是一个非常有经验的程序员,当我开始使用MATLAB, MATLAB是“更多的”添加了一些有趣的特性。类和并行编程等可能性,少一个有经验的程序员,对语法和学习更多关于思考编程的新方法。(但是有经验的程序员可以有点化石在他们如何思考编程中,所以它可以 很多 实践学习全新的方法。我从来没有真正“有”面向对象编程,例如)。
2的评论

登录置评。


约翰D 'Errico
约翰D 'Errico 2015年7月6日
像沃尔特,我学会了程序在旧语言——主要是Fortran和APL。对编程这教会你不错的概念,但是Fortran等语言可以适得其反,如果他们让你写循环的习惯。本我想象,C还在,虽然我不知道,因为我几乎不能拼写C,更不用说写了。(Fortran的较新版本允许数组操作,更容易编写代码的方式,和更好的移动MATLAB)。
不过,关键是你可能需要学习一种新的编程风格,考虑操作整个数组,而不是单个元素操作封装在循环。这需要一些练习。
学习MATLAB,我建议选择一个你感兴趣的问题,并解决它。你可能会开始科迪的问题,但我建议越来越像Project Euler问题更有趣的问题。他们中的许多人在MATLAB完全可以解决的。(我已经做了几百个在MATLAB中,所以我知道这是真的。)
当你进步技巧,你也可以尝试挑别人的代码,发现在文件交换。我有50 +工具FEX为例。选择一个简单的例子,看我是如何写的。这可以教会你东西不同的编程风格,尤其是如果你看FEX其他作者的工作。
当然,你可以通过阅读学到很多论坛。不过要小心。一个过滤器适用于你所看到的,因为任何人都可以回答一个问题。(包括我!)思考你所看到的,并决定是否对你们有帮助。
1评论
生物lim
生物lim 2015年7月6日
谢谢你的好建议!我也采取了Fortran在我的一些工程类,但没有对编程很感兴趣。然而现在,在开始学习MATLAB,我可以看到它有多神奇。从未想过编程将这激动人心!

登录置评。


亚当
亚当 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%的我写的代码是面向对象,我相信我们的代码库是大大更好了,飞跃。
至于其他东西,除了学习我通过实验和优秀的文档开始访问这个论坛。从一开始我决定至少要给我“拿”所以我开始回答问题之前,我先问我。我发现我有很多知识,可以传递给他人,这样,当别人说,我学习了大量。这是很重要的,因为我做全职工作,同时帮助别人很好我只花费工作时间这样做,因为我学到很多东西,提高了自己的编程太所以我的雇主获得。
除了这个论坛 实验后奥特曼的博客 定期一直为我启蒙的来源,特别是当我去“失去控制”与我的需求和需要深入研究java。
最后,两个最大的事情帮助我学习Matlab:
  • Matlab命令窗口,使用它!实验与语法和尝试的东西,因为它是很容易的
  • 调试器——盟军命令窗口调试代码,能够发挥在命令行中一个调试会话是非常宝贵的。
2的评论
约翰D 'Errico
约翰D 'Errico 2017年3月30日
沃尔特使一个很好的观点。我已经把我的想法写几百手桥上我了。MATLAB,但经常一样困难。我发现在一个明确的写出我的想法,有凝聚力的方式,以便其他人可以跟随他们,这迫使我积极思考的问题。在我明确概念,否则略模糊。

登录置评。


为副总经理
为副总经理 2021年7月6日
编辑:为副总经理 2021年7月6日
其他人有了可以说是什么更有用的答案。我不是专家,但是我认为一点没有提到(类似于斯蒂芬的最后一点)是随便花一些时间来熟悉你的工具没有执行任务的负担。
我学会了打字机上打字,远离所有的练习没有任何实际的打字能力。直到我的动机和他人交流实时在线,我学会了为自己的自私的动机类型。同样,所有的课程和研究推动Matlab很难教会我太多熟悉的广度和深度。直到我开始写作 我自己的 项目的挑战感到有意义的奖励,我开始找到一些碎片的信心。
…也许我只是把自己当作是一个可怕的学习者。我想我老了生活。

史蒂文的主
史蒂文的主 2020年5月1日
编辑:史蒂文的主 2020年5月1日
问两个问题,可以有用在编写一段重要的代码是“我试图解决什么问题?”和“什么步骤我需要做什么才能解决我的问题吗?”
有时当我编写代码我会开始只是一群评论清单的步骤或一系列的函数调用(没有身体,只有名字。)这是在我的心灵里修复一系列步骤,确保我不会遗漏任何事情。一旦我有一般的工作流程,我确定每个步骤需要接收输入和它所需要的其他部分工作流程。这样就完成了每个函数的签名。然后我可以实现每一步的功能,独立于其他的工作流。这限制了多久我必须回到一个已经实现的功能和改变它,以满足以后功能的要求。
你可能会通过短,节省时间可能神秘的函数或变量名。我建议抵制这种诱惑,除非可能使用的变量只有很短的时间内。所以用单字母变量名像t、y是一个匿名函数的输入参数可能是好的。
odefun = @ t (t, y)。* y;
任何的重复使用,我尽量选择函数和变量名称,使我的代码看起来或多或少像英语句子或短语描述函数的目的,变量和/或函数调用。选项卡完成可以帮助限制输入你需要做多少。考虑一个例子:
data = readDataFromFile(文件名);
不知道任何关于身体的功能,你可以得到一个很好的理解它,大概它返回什么。
data = readDataFromFile(文件名);
cleanedData = removeOutliersAndMissing(数据);
这看起来像两个合理的步骤分析数据的过程中从一个文件中。
调试工具,代码分析器,和其他工具来帮助你解决,避免问题在您的代码中已经提到,他们很好的工具在你的工具箱。有一些人可能是顺便提到将是有用的,特别是对于更大的项目。
  • 分析器可以帮助您了解您的代码的性能瓶颈所在的地方,你的注意力集中长杆
  • 在MathWorks给予我工作的部门,我不认为它会惊讶,我给一个插头测试工具。甚至一些基于脚本的测试来锁定最关键部分的代码的行为将帮助您何时或是否需要更改代码,减少的可能性,你会打破它。注意我们的框架代码的正确性和测量性能,减少代码的机会你会慢下来,没有注意到。
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年11月18日
odefun = @ t (t, y)。* y;
变量名称可能是短期和神秘,但在颂歌的背景下数字解决他们也是传统的,这可以帮助让他们认可的公平一点。就像所有的Mathworks优化器如何使用名称等,b, Aeq,说真的,磅,乌兰巴托:编码模式与常见的重复可以变得足够强大,使用不同的名称可以是分散的。
(如果你深入实施数值,那么你会发现很多地方都问自己有什么区别输入参数名称和名称携带通过代码,因为有一个编程的格言,如果你使用一个不同的名称,那么它应该是一个不同的目的。)

登录置评。


布雷特Pantalone
布雷特Pantalone 2021年1月28日
需要一点时间去精通MATLAB,特别是如果你是来自传统的编程语言。我同意一切说在前面的答案,但我想强调的一些真的帮了我个人的事情。
  • 了解MATLAB使用向量和矩阵,各种方法你也可以使用下标访问和切片。学习如何使用一个逻辑面具来过滤一个向量或矩阵的元素。
  • 学习操作进行向量化。当你发现自己编写一个FOR循环,使用向量操作试图消除它。通常你可以这样做,使代码更快和更容易理解。
  • MATLAB的帮助系统是最好的。使用帮助> <命令的命令语法的提醒,和“医生<命令>”读到使用细节和可选参数。
  • 不要重新发明轮子。MATLAB包含大量的内置函数,可以处理多种类型的问题,更不用说所有专门的工具箱。
  • 不要试图第一次写完美的代码。得到一些工作,验证你的结果,然后如果需要优化它的大小和速度。
  • 慷慨地使用注释文档的代码。即使今天一些似乎是显而易见的,一段时间后,已经过去了你会发现自己在想,“到底是我想做的吗?”Writing good comments saves time in the long run.
  • 把问题分成小块,写函数而不是大的脚本。这有助于提高代码的架构,使它更容易重用,调试和共享代码。
  • 看别人的代码有助于学习和理解MATLAB的编程习语和最佳实践。检查文件共享部分的具体问题的解决办法。金宝搏官方网站
  • 最后,MathWorks问答论坛有很多有用的信息。但是你已经知道。
好运!
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年1月28日
向量化不是 总是 最好的。在某些情况下它可以强迫你为多维逻辑阵列,计算值在整个范围的可能性似所有的条目会被选中,然后选择答案使用逻辑面具。的分数维数上升,最终会被选中的条目能迅速下降,反而会变得更快的循环和选择有限子集来计算。

登录置评。


哈维尔
哈维尔 2021年9月16日
编辑:哈维尔 2021年9月16日
你好,我不是一个Matlab决不专家。我一直在使用Matlab大约两年了。
东西也真的帮助我寻找其他的事情,我可以使用Matlab,能够让我的工作流程更有效率。
例如,当我在.tex文档(这是非常用于工程大学),而不是自己的表,可能需要大量的时间,寻找一个函数,可以让它给你。
同时,尝试使用他们的个人proyects(管理不同格式文件),或者proyects不是必要的工程的。
阅读一些书籍和看课程如果你开始也是有用的。
同时,试着问和回答问题的Matlab回答论坛,你可以学习学习不同解决别人的问题,然后在你自己的方式试图解决这些问题。金宝搏官方网站可能会有一些困难的,但也有一些具有挑战性的足够的。
同样,如果你理解错误出现在命令窗口,我认为编码将会容易得多。

Kerem Utku Demir
Kerem Utku Demir 2021年7月5日
自学课程就足够了。
2的评论
漂亮的女孩
漂亮的女孩 2021年7月6日
@Walter罗伯森 你是对的。自学课程不够直到一开始让他/她的手脏的实际实现才能知道“你知道多少!”。我只找到了这个社区有帮助。

登录置评。


Sulaymon Eshkabilov
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评论
克里Paparusi
克里Paparusi 2022年6月2日
我使用MatLab好几天。我买了一大本关于如何编写一个粒子加速器。我想等我完成我应该挂。到目前为止,不是所有的代码进行得很顺利。我不是疯了。那我如何学习。

登录置评。


NEHA CHOUDHARY
NEHA CHOUDHARY 2022年9月22日
我是新手但想瘦它和它很有趣当我们理解这个概念。

马里奥buchele
马里奥buchele 2022年9月22日
首先,它可以压倒开始使用Matlab,因为如果你不熟悉,这个概念是完全不同于最常见的工具,工程师使用现在:“出类拔萃”。所以,我建议familir平台,做一些免费的Matlab斜坡弯道MathWorks提供的教程。
之后,试图强迫自己使用Matlab一切:从简单的计算,情节曲线,分析数据……,避免使用Excel。找到的例子,类似的问题在论坛或谷歌。我总是找到一个类似的程序或函数编码之前,我学到很多东西。和谷歌需要合并的任何函数。最有可能的Matlab函数已经你的问题,和Matlab帮助文件是非常漂亮的和完整的。
这需要一些时间,但最后,这更值得比使用Excel为你的工作!
希望这可以帮助!

类别

找到更多的在开始使用MATLAB帮助中心文件交换

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!