Matlab面向?qū)ο缶幊?/strong>,matlab面向?qū)ο缶幊讨С植诲e(cuò),用于開發(fā)工具箱(工具箱就是不適合編譯發(fā)布的軟件,只在ml平臺(tái)下運(yùn)行)曾在matlab發(fā)布會(huì)中了解到這個(gè)oop在國(guó)外用的比較多,自己也用過相關(guān)的第三方oop的工具箱。
Matlab面向?qū)ο缶幊痰膬煞N方式
Matlab支持面向?qū)ο缶幊,主要有兩種方式,一種是利用class命令,一種是利用classdef關(guān)鍵字。Octave(一種開源科學(xué)計(jì)算程序,可視為Matlab的替代品)目前只支持第一種方式,對(duì)classdef暫不支持。
1. 利用class命令創(chuàng)建類
創(chuàng)建一個(gè)@class形式的文件夾,其中class代表要實(shí)現(xiàn)的類的名稱。假定需要?jiǎng)?chuàng)建一個(gè)名為point的類,可以創(chuàng)建一個(gè)名為@point的文件夾:
之后,文件夾@point下定義的函數(shù)會(huì)被視為point類的成員函數(shù)。主要包括:
point.m
構(gòu)造函數(shù)。這是一個(gè)與類名稱同名的函數(shù)。
get.m
用于獲取類point的屬性。
set.m
用于設(shè)置類point的屬性。
display.m
用于控制類的顯示字符串。
disp.m
同display.m,但是比display更加高級(jí),在disp.m中會(huì)調(diào)用display.m。因而display.m可以實(shí)現(xiàn)對(duì)顯示更加精細(xì)的控制。
move.m
可以是任何用戶自定義函數(shù)。
以上列出的幾類函數(shù)中,只有構(gòu)造函數(shù)是必需的。但是,由于一般面向?qū)ο缶幊讨卸紩?huì)涉及對(duì)屬性的訪問(讀取和設(shè)置),所以大多數(shù)情況下也會(huì)實(shí)現(xiàn)get.m和set.m。用戶自定義函數(shù)根據(jù)不同的應(yīng)用場(chǎng)景,可以有也可以沒有,而且可以有多個(gè)用戶自定義成員函數(shù)。
2. 利用classdef關(guān)鍵字創(chuàng)建類
classdef是Matlab中用于創(chuàng)建類的關(guān)鍵字。其基本結(jié)構(gòu)為
其中properties用于定義類的屬性,methods定義類的成員函數(shù),events塊定義類的事件。
classdef支持類的繼承,通過<操作符進(jìn)行說(shuō)明,多個(gè)父類中間用&分隔。其基本語(yǔ)法為:
此外,methods和properties語(yǔ)句塊還可以利用更多的描述符控制其訪問級(jí)別,從而使得類能夠支持公共屬性,私有屬性,公共方法,私有方法,靜態(tài)方法等特性。關(guān)于classdef的更多細(xì)節(jié)請(qǐng)參考Matlab文檔或者網(wǎng)上資料。
MATLAB面向?qū)ο缶幊淌鞘裁礃拥捏w驗(yàn)?
【問題】我是理工科學(xué)生,MATLAB用的很熟練,我有必要學(xué)面向?qū)ο缶幊虇幔?/p>
【回答】我們的書籍主要面向的就是理工專業(yè)的學(xué)生學(xué)者,我們希望通過介紹MATLABOOP來(lái)幫助他們更好的解決科研中的問題;蛟S你曾有這種感覺:在科研和學(xué)習(xí)中,寫的程序一但到達(dá)一定的規(guī)模,維護(hù)起來(lái)就會(huì)很困難,調(diào)試越來(lái)越慢。隨著科研項(xiàng)目不斷有新的要求,程序在不斷的修改和擴(kuò)展;函數(shù)多達(dá)上百個(gè);一旦有修改則牽一發(fā)則動(dòng)全身;有的時(shí)候甚至需要做傷筋動(dòng)骨的修改。MATLAB的面向?qū)ο缶幊毯驮O(shè)計(jì)就是專門幫你解決中這種問題的,我們這本書的重點(diǎn)不是介紹一個(gè)函數(shù)或者技巧,這本書的重點(diǎn)是怎樣從整體上去設(shè)計(jì)我們的程序,小到一個(gè)家庭作業(yè),一個(gè)兩個(gè)星期的項(xiàng)目,大到碩士或者博士的畢業(yè)設(shè)計(jì),一個(gè)大型的多人合作的項(xiàng)目。面向?qū)ο蟮乃枷胱屇銖姆敝氐某绦蚓S護(hù)中解脫出來(lái),讓你的注意力放到真正需要解決的問題之上,把需要解決的問題解決好。再次重申,我們不是為了學(xué)習(xí)面向?qū)ο蠖鴮W(xué)習(xí)面向?qū)ο,作為科研人員,我們都以高效務(wù)實(shí)為目標(biāo),如果一個(gè)技術(shù)能夠讓我們投資少量的時(shí)間去學(xué)習(xí),并且學(xué)會(huì)了之后讓我的科研工作如虎添翼,讓我有更多的時(shí)間做其它事情,何樂而不為呢。
【問題】面向?qū)ο缶幊屉y道不是只有計(jì)算機(jī)專業(yè)的人才用的嗎?
【回答】計(jì)算機(jī)專業(yè)背景的科研人員使用面向?qū)ο笳Z(yǔ)言編程是一個(gè)自然的選擇,因?yàn)槊嫦驅(qū)ο罂梢愿玫膸退鼈兘鉀Q軟件設(shè)計(jì)的問題。但是面向?qū)ο蟮姆椒ú⒉皇擒浖袠I(yè)所獨(dú)有的,面向?qū)ο罂梢员蝗魏螌W(xué)術(shù)背景的研究人員使用,適合解決各個(gè)行業(yè)的學(xué)術(shù)問題。由于目前主流的面向?qū)ο笳Z(yǔ)言比如C++JAVA學(xué)習(xí)周期比較長(zhǎng),面向?qū)ο蟮姆椒ê驮O(shè)計(jì)思想被繁瑣的語(yǔ)法隱藏了起來(lái),大多數(shù)非CS專業(yè)背景的研究人員沒有這樣的時(shí)間和精力去先學(xué)習(xí)C++和JAVA的語(yǔ)法,然后再學(xué)習(xí)面向?qū)ο蟮木幊趟枷,進(jìn)而再使用的實(shí)際的科研工作中來(lái)。而且在科學(xué)工程計(jì)算中,MATLAB才是主流的語(yǔ)言。MATLAB從2008a之后開始真正的支持面向?qū)ο缶幊。MATLAB的提供了這樣一個(gè)寶貴的機(jī)會(huì),它能夠讓我們避開繁瑣的語(yǔ)法,直接接觸到核心的面向?qū)ο蠛驮O(shè)計(jì)模式的思想。所以這句話應(yīng)該這么說(shuō),使用MATLAB語(yǔ)言,你不需要CS的專業(yè)知識(shí)也能學(xué)會(huì)面向?qū)ο蠛蛯?shí)際模式。
【問題】MATLAB已經(jīng)很簡(jiǎn)單了,為什么我還要學(xué)面向?qū)ο蟮腗ATLAB
【回答】MATLAB致力于提供給用戶簡(jiǎn)單的語(yǔ)法,使得用戶上手快,編程語(yǔ)言和實(shí)用語(yǔ)言更加的貼近自然語(yǔ)言,但是這并不代表我們要解決的科研問題是簡(jiǎn)單的。面向?qū)ο笫且环N系統(tǒng)化編程的思路,教你一開始就去系統(tǒng)化的設(shè)計(jì)你的程序,設(shè)計(jì)模式給你提供了十幾種解決復(fù)雜問題的套路,如果你能把這些套路使用在你的科研工作編程中,你的科研工作必將如虎添翼。
【問題】學(xué)習(xí)MATLAB面向?qū)ο笮枋裁礃拥幕A(chǔ)
【回答】我們寫本書的目的就是要做到讓具有初級(jí)的MATLAB語(yǔ)言基礎(chǔ)的讀者能夠迅速地一步到位把面向?qū)ο蟮乃枷霛B透到自己的編程習(xí)慣中去。其實(shí)只要懂得什么是變量,什么是函數(shù),就完全能夠開始學(xué)習(xí)MATLABOOP了。對(duì)于有經(jīng)驗(yàn)的讀者,就是那些熟悉MATLAB語(yǔ)言和各種toolbox的讀者,我們的MATLABOOP書能夠讓他們更深入的了解MATLAB的體系,提高自己的對(duì)程序的總體設(shè)計(jì),做到事半功倍。
【問題】面向?qū)ο缶幊淌遣皇且ê芏鄷r(shí)間學(xué)。课疫有研究課題要做,沒有這么多時(shí)間啊
【回答】本書的作者都是理工科的背景,秉持高效務(wù)實(shí)的做事風(fēng)格,完成每一項(xiàng)工作都非常的注重成本,也就是所花的時(shí)間。我們完全沒有興趣編寫一本全面詳盡,但是閱讀起來(lái)費(fèi)時(shí)費(fèi)力的書,這樣的書也不會(huì)受到我們目標(biāo)讀者的歡迎。讓讀者用最短的時(shí)間入門面向?qū)ο螅屪x者用最小的成本學(xué)會(huì)面向?qū)ο蟮闹屑?jí)基礎(chǔ),并且能夠順利的進(jìn)入到編程思想的學(xué)習(xí)當(dāng)中去,越過面向?qū)ο笳Z(yǔ)法上的障礙,真正的享受使用面向?qū)ο蟮木幊谭椒。才是我們的目的。我們還盡量的讓書中內(nèi)容的編排便于查找,讀者完全可以跳躍性的閱讀自己需要的內(nèi)容,當(dāng)工作變得復(fù)雜,需要更多MATLAB面向?qū)ο缶幊陶Z(yǔ)言特性的時(shí)候再會(huì)夠頭來(lái)查找。
【問題】面向?qū)ο缶幊屉y學(xué)么?或者說(shuō),我要學(xué)多久才能用到實(shí)際的編程中
【回答】面向?qū)ο蟮乃枷氩⒉浑y,但是目前主流的面向?qū)ο蟮恼Z(yǔ)言比如C++和JAVA,在語(yǔ)法上的繁瑣使得面向?qū)ο筮@塊寶藏被隱藏在了各種語(yǔ)法規(guī)定的后面。MATLAB的面向?qū)ο笳Z(yǔ)言的支持提供了前所未有的機(jī)會(huì),讓我們能夠迅速的越過這些障礙,真正學(xué)習(xí)編程的思想。眾所周知,學(xué)習(xí)一門語(yǔ)言不但需要學(xué)習(xí)語(yǔ)言的語(yǔ)法,還需要不停的實(shí)踐。對(duì)于廣大的研究人員,MATLAB是一門主流的科學(xué)計(jì)算的語(yǔ)言,你學(xué)習(xí)了MATLAB面向?qū)ο蟮恼Z(yǔ)法,第二天就可以直接使用到自己的科研編程中去,哪怕是一個(gè)簡(jiǎn)單的擬合,做圖,你都可以用使用OOP的思想把你的程序組合起來(lái),你自己的科研就是實(shí)踐編程思想的最好的平臺(tái),好的編程思想可以讓你的科研工作事半功倍。MATLAB作為一個(gè)高級(jí)的工程科學(xué)計(jì)算軟件,給你提供了前所未有的,在以往只有CS專業(yè)背景的人才能夠具有的實(shí)踐編程思想的機(jī)會(huì)。
【問題】MATLAB的面向?qū)ο缶幊毯虲++和JAVA的面向?qū)ο缶幊逃惺裁床灰粯訂幔?/p>
【回答】MATLAB作為一個(gè)商業(yè)軟件,提供面向?qū)ο缶幊痰闹С,這和C++和JAVA有本質(zhì)的不同,C++和JAVA給用戶提供"基石",用戶需要花大力氣去首先學(xué)習(xí)其語(yǔ)法,然后學(xué)用這些"基石"的組合來(lái)解決復(fù)雜的問題,這需要一個(gè)較長(zhǎng)的學(xué)習(xí)周期才能上手,這需要相當(dāng)深厚的基礎(chǔ)知識(shí)和時(shí)間,而大部分的科研工作者沒有這樣的時(shí)間和精力去專門學(xué)習(xí)一門語(yǔ)言來(lái)幫助他們解決問題。MATLAB提供了這樣一種渠道,把這些基石進(jìn)行相當(dāng)復(fù)雜的組合,然后當(dāng)作一個(gè)語(yǔ)言的特殊功能提供給用戶。我們只需要多這些特殊功能稍加了解,就可以很快掌握,這是一種務(wù)實(shí)的精神,我們需要在有限的時(shí)間內(nèi),以最高的效率完成任務(wù)。本書還會(huì)簡(jiǎn)單解釋一些這些特殊的功能是來(lái)自何方,大概是怎么實(shí)現(xiàn)的,目的是為了幫助讀者更好的使用這些功能。
【問題】面向?qū)ο缶幊毯蜁械脑O(shè)計(jì)模式是一回事嗎?
【回答】面向?qū)ο笫窍鄬?duì)于面向過程的一種編程方式,設(shè)計(jì)模式是建立在面向?qū)ο蠡A(chǔ)之上的針對(duì)一些常見的復(fù)雜問題的抽象解決方法。問題再?gòu)?fù)雜,都可以被分解成小的部分加以抽象,然后使用設(shè)計(jì)模式來(lái)高效的解決。有的時(shí)候是多種設(shè)計(jì)模式的結(jié)合。
【問題】MATLAB面向?qū)ο蟛皇怯幸槐居⑽牡挠脩羰謨?cè)嗎,你們的這本書和這本英文手冊(cè)比有什么優(yōu)點(diǎn)
【回答】本書部分參考了英文MATLAB面向?qū)ο蟮挠脩羰謨?cè)中的內(nèi)容,并在此之上做了大量的改進(jìn),使其能夠?yàn)楦嗬砉た朴脩魧W(xué)習(xí)和閱讀。具體說(shuō)來(lái),:首先這本用戶手冊(cè)有500多頁(yè)英文,通讀起來(lái)不是一件容易的事情。第二它只介紹了基本的MATLAB基本的面向?qū)ο蠹夹g(shù),沒有介紹設(shè)計(jì)模式,而設(shè)計(jì)模式才是真正利用OOP的試金石。第三因?yàn)镺OP的編程和設(shè)計(jì)模式已經(jīng)是很成熟的技術(shù),我們還參考了大量的C++,JAVA的面向?qū)ο蟮木幊虝,和設(shè)計(jì)模式的書籍,我們有信心這本MATLABOOP的數(shù)據(jù)將比MATLABOOP的英文手冊(cè)更加的面向中文讀者,而且學(xué)習(xí)和閱讀的成本很低,就是說(shuō)我們的目的就是讓讀者花很少的時(shí)間和精力去學(xué)習(xí)并且掌握MATLABOOP.
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版