Matlab面向对象编程是否值得大量使用?

论坛 期权论坛 study     
匿名的用户   2019-6-10 00:47   8194   5
我做过几年C++,感觉Matlab的OOP速度不如C++的OOP,比C++OOP更容易绕晕新手。不知道实际使用中,如果不制作工具包,单纯做算法的话,matlab的OOP是否值得花力气学习和大量使用?
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
热心的回应  16级独孤 | 2019-6-10 00:47:14 发帖IP地址来自
代码如果超过200行的话,oop完全值得。
速度上不应该和c语言比,而应该和MATLAB面向过程相比,以我的经验,一般慢个10%.(运算核心部分,即最耗时的部分,不要用面向对象编程)
但是,oop带来的可维护,思路清晰的优点完全可以弥补这微小的性能差异。
MATLAB的oop几乎覆盖了oop所有应该有的特性。强烈推荐使用。
推荐使用MATLAB R2015b以上的版本,因为MATLAB的oop速度显著提升。
推荐教材《MATLAB面向对象编程-从入门到设计模式》, 我是靠它入门的。
3#
热心的回应  16级独孤 | 2019-6-10 00:47:15 发帖IP地址来自
作为《MATLAB面向对象编程-从入门到设计模式的作者》,如下的问答可以帮你大致了解在MATLAB中面向对象编程的能给你带来什么

【问题】我是理工科学生,MATLAB用的很熟练,我有必要学面向对象编程吗?
【回答】我们的书籍主要面向的就是理工专业的学生学者,我们希望通过介绍MATLAB OOP来帮助他们更好的解决科研中的问题。或许你曾有这种感觉: 在科研和学习中,写的程序一但到达一定的规模,维护起来就会很困难, 调试越来越慢。随着 科研项目不断有新的要求,程序在不断的修改和扩展; 函数多达上百个; 一旦有修改则牵一发则动全身; 有的时候甚至需要做伤筋动骨的修改。MATLAB 的面向对象编程和设计就是专门帮你解决中这种问题的,我们这本书的重点不是介绍一个函数或者技巧,这本书的重点是怎样从整体上去设计我们的程序,小到一个家庭作业,一个两个星期的项目,大到硕士或者博士的毕业设计,一个大型的多人合作的项目。面向对象的思想让你从繁重的程序维护中解脱出来,让你的注意力放到真正需要解决的问题之上,把需要解决的问题解决好。再次重申,我们不是为了学习面向对象而学习面向对象,作为科研人员,我们都以高效务实为目标,如果一个技术能够让我们投资少量的时间去学习,并且学会了之后让我的科研工作如虎添翼,让我有更多的时间做其它事情,何乐而不为呢。


【问题】面向对象编程难道不是只有计算机专业的人才用的吗?
【回答】计算机专业背景的科研人员使用面向对象语言编程是一个自然的选择,因为面向对象可以更好的帮它们解决软件设计的问题。但是面向对象的方法并不是软件行业所独有的,面向对象可以被任何学术背景的研究人员使用,适合解决各个行业的学术问题。由于目前主流的面向对象语言比如C++ JAVA学习周期比较长,面向对象的方法和设计思想被繁琐的语法隐藏了起来,大多数非CS专业背景的研究人员没有这样的时间和精力去先学习C++和JAVA的语法,然后再学习面向对象的编程思想,进而再使用的实际的科研工作中来。而且在科学工程计算中,MATLAB才是主流的语言。MATLAB从2008a之后开始真正的支持面向对象编程。MATLAB的提供了这样一个宝贵的机会,它能够让我们避开繁琐的语法,直接接触到核心的面向对象和设计模式的思想。所以这句话应该这么说,使用MATLAB语言,你不需要CS的专业知识也能学会面向对象和实际模式。



【问题】MATLAB已经很简单了,为什么我还要学面向对象的MATLAB
【回答】MATLAB致力于提供给用户简单的语法,使得用户上手快,编程语言和实用语言更加的贴近自然语言,但是这并不代表我们要解决的科研问题是简单的。面向对象是一种系统化编程的思路,教你一开始就去系统化的设计你的程序,设计模式给你提供了十几种解决复杂问题的套路,如果你能把这些套路使用在你的科研工作编程中,你的科研工作必将如虎添翼。



【问题】学习MATLAB面向对象需什么样的基础
【回答】我们写本书的目的就是要做到让具有初级的MATLAB语言基础的读者能够迅速地一步到位把面向对象的思想渗透到自己的编程习惯中去。其实只要懂得什么是变量,什么是函数,就完全能够开始学习MATLAB OOP了。对于有经验的读者,就是那些熟悉MATLAB语言和各种toolbox的读者,我们的MATLABOOP书能够让他们更深入的了解MATLAB的体系,提高自己的对程序的总体设计,做到事半功倍。



【问题】面向对象编程是不是要花很多时间学啊?我还有研究课题要做,没有这么多时间啊
【回答】本书的作者都是理工科的背景,秉持高效务实的做事风格,完成每一项工作都非常的注重成本,也就是所花的时间。我们完全没有兴趣编写一本全面详尽,但是阅读起来费时费力的书,这样的书也不会受到我们目标读者的欢迎。让读者用最短的时间入门面向对象,让读者用最小的成本学会面向对象的中级基础,并且能够顺利的进入到编程思想的学习当中去,越过面向对象语法上的障碍,真正的享受使用面向对象的编程方法。才是我们的目的。我们还尽量的让书中内容的编排便于查找,读者完全可以跳跃性的阅读自己需要的内容,当工作变得复杂,需要更多MATLAB面向
对象编程语言特性的时候再会够头来查找。



【问题】面向对象编程难学么?或者说,我要学多久才能用到实际的 编程中
【回答】面向对象的思想并不难,但是目前主流的面向对象的语言比如C++和JAVA,在语法上的繁琐使得面向对象这块宝藏被隐藏在了各种语法规定的后面。MATLAB的面向对象语言的支持提供了前所未有的机会,让我们能够迅速的越过这些障碍,真正学习编程的思想。众所周知,学习一门语言不但需要学习语言的语法,还需要不停的实践。 对于广大的研究人员,MATLAB是一门主流的科学计算的语言,你学习了MATLAB 面向对象的语法,第二天就可以直接使用到自己的科研编程中去,哪怕是一个简单的拟合,做图,你都可以用使用OOP的思想把你的程序组合起来,你自己的科研就是实践编程思想的最好的平台,好的编程思想可以让你的科研工作事半功倍。
MATLAB 作为一个高级的工程科学计算软件,给你提供了前所未有的,在以往只有CS专业背景的人才能够具有的实践编程思想的机会。



【问题】MATLAB的面向对象编程和C++和JAVA的面向对象编程有什么不一样吗?
【回答】MATLAB作为一个商业软件,提供面向对象编程的支持,这和C++和JAVA有本质的不同,C++和JAVA给用户提供"基石",用户需要花大力气去首先学习其语法,然后学用这些"基石"的组合来解决复杂的问题,这需要一个较长的学习周期才能上手,这需要相当深厚的基础知识和时间,而大部分的科研工作者没有这样的时间和精力去专门学习一门语言来帮助他们解决问题。
MATLAB提供了这样一种渠道,把这些基石进行相当复杂的组合,然后当作一个语言的特殊功能提供给用户。我们只需要多这些特殊功能稍加了解,就可以很快掌握,这是一种务实的精神,
我们需要在有限的时间内,以最高的效率完成任务。本书还会简单解释一些这些特殊的功能是来自何方,大概是怎么实现的,目的是为了帮助读者更好的使用这些功能。



【问题】面向对象编程和书中的设计模式是一回事吗?
【回答】面向对象是相对于面向过程的一种编程方式,设计模式是建立在面向对象基础之上的针对
一些常见的复杂问题的抽象解决方法。问题再复杂,都可以被分解成小的部分加以抽象,然后使用设计模式来高效的解决。有的时候是多种设计模式的结合。


【问题】MATLAB面向对象不是有一本英文的用户手册吗,你们的这本书和这本英文手册比有什么优点
【回答】本书部分参考了英文MATLAB面向对象的用户手册中的内容,并在此之上做了大量的改进,使其能够为更多理工科用户学习和阅读。具体说来,:首先这本用户手册有500多页英文,通读起来不是一件容易的事情。第二它只介绍了基本的MATLAB基本的面向对象技术,没有介绍设计模式,而设计模式才是真正利用OOP的试金石。第三因为OOP的编程和设计模式已经是很成熟的技术,我们还参考了大量的C++,JAVA的面向对象的编程书籍,和设计模式的书籍,我们有信心这本MATLAB OOP的数据将比MATLAB OOP的英文手册更加的面向中文读者,而且学习和阅读的成本很低,就是说我们的目的就是让读者花很少的时间和精力去学习并且掌握MATLAB OOP.
4#
热心的回应  16级独孤 | 2019-6-10 00:47:16 发帖IP地址来自
关于性能方面,最新版本R2015B升级了matlab引擎,全面提升了效率,在Release Notes 中有说:
The new MATLAB execution engine includes performance improvements to function calls, object-oriented operations, and many other MATLAB operations.
Release Notes for MATLAB
MATLAB 执行引擎
不过具体有多少提升,我好像还没有看过专门对比OO部分的测试。
关于要不要用OO这个主要你自己来回答吧,如果你现在做的事情,例如你说的“单纯做算法”已经可以做得游刃有余,那不学OO也没什么关系吧。
要学的话MATLAB的OO应该也不算难,下边是OO的文档的PDF版本:
https://www.mathworks.com/help/pdf_doc/matlab/matlab_oop.pdf
5#
热心的回应  16级独孤 | 2019-6-10 00:47:17 发帖IP地址来自
绝对值得学,我是拿matlab做量化投资的,面向过程的话一个策略需要写一遍代码,能把人写吐。但是面向对象不一样啊,把数据调用这一块写成类,需要什么策略直接修改几个地方,一个全新的策略就出来了,而且需要加什么功能,直接在属性和方法里边修改添加,不需要推倒重来。不知道你是干什么的,以我学面向对象来看,最好的办法不是看书,而是找老司机教你用法,这个很快就学会了,时间成本极低,不过你要是打算精通学会的话,这个可能要费事点。
6#
热心的回应  16级独孤 | 2019-6-10 00:47:18 发帖IP地址来自
虽然OOP是个好东西,但作为Matlab老司机,还真不知道Matlab到底在哪些领域应用时一定需要抽象成OOP才好理解……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:32080
帖子:6440
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP