《《MATLAB語言及其應(yīng)用》全套課件(清華大學(xué))》由會員分享,可在線閱讀,更多相關(guān)《《MATLAB語言及其應(yīng)用》全套課件(清華大學(xué))(340頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、MATLAB 語言及其應(yīng)用,授課教師:李欣 單位:清華大學(xué),2,課程的作用 課程的目的 課程的特點 課程安排,3,課程的作用,在歐美各高等學(xué)校,Matlab成為線性代數(shù)、自動控制理論、數(shù)字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真、圖像處理等諸多課程的基本教學(xué)工具,成為本科生、碩士生和博士生的必須掌握的基本技能。 在設(shè)計研究單位和工業(yè)部門,Matlab已被廣泛地用于研究和解決各種具體的工程問題。 可以預(yù)見,Matlab將在我國科學(xué)研究和工程應(yīng)用中發(fā)揮越來越大的作用。,4,講授MATLAB語言基礎(chǔ)入門知識,介紹MATLAB產(chǎn)品的體系、MATLAB桌面工具的使用方法,重點介紹MATLAB的數(shù)據(jù)可視化、數(shù)
2、值計算的基本步驟以及如何使用MATLAB語言編寫整潔、高效、規(guī)范的程序。并涉及到一些具體的專業(yè)應(yīng)用工具箱(如:信號處理工具箱、圖像處理工具箱等)。 通過本課程的學(xué)習(xí),了解、熟悉、掌握 MATLAB的基本編程方法,并具有初步的利用計算機處理、解決實際問題的能力,為進一步學(xué)習(xí)后續(xù)的專業(yè)課程做好準備。,本課程的目的( Objectives of This Course ),本課程的特點( Features of This Course ) 交叉性課程,是計算機技術(shù)、數(shù)學(xué)理論知識以及諸多工程理論知識的綜合。 實踐性課程。 內(nèi)容多,課時少,要求同學(xué)上課認真聽講,要充分利用上機實踐消化、理解、 掌握課上講
3、解內(nèi)容。,5,課程安排,課堂教學(xué):共24學(xué)時;(1-12周) 上機試驗:共24學(xué)時。 (2-13周,周二7-8節(jié),九實401、402、403) 學(xué)習(xí)成績: 1)上機實驗成績占30%; 2)考勤 10% ; 3) 考試60% (隨堂考試)。 主要參考書 精通MATLAB 6.5張志涌 等編著,北航出版,2003年 高等應(yīng)用數(shù)學(xué)問題的Matlab求解 薛定宇等著,清華大學(xué)出版社,2004年 Matlab程序設(shè)計與應(yīng)用 劉衛(wèi)國主編,高等教育出版社,6,授課宗旨,講授MATLAB的通用功能。 寓教于例,由淺入深。 關(guān)于科學(xué)計算,著重強調(diào)理論概念、算法和實際計算三者之間的關(guān)系。,7,第一講 Matlab
4、概述,前言 Matlab軟件概述 Matlab的桌面環(huán)境及入門知識,8,1 Matlab概述,內(nèi)容 Matlab發(fā)展歷史 Matlab產(chǎn)品家族(Matlab family of products)體系 Matlab 語言的特點。 目的 全面了解 Matlab軟件包 激發(fā)對Matlab軟件的學(xué)習(xí)興趣。,9,1.1 MATLAB的歷史及影響,70年代中期,Cleve Moler博土及其同事在美國國家基金會的幫助下,開發(fā)了LINPACK和EISPACK的FORTRAN語言子程序庫,這兩個程序庫代表了當(dāng)時矩陣運算的最高水平。 到了70年代后期,身為美國新墨西哥州大學(xué)計算機系系主任的CIeve Mole
5、r,在給學(xué)生上線性代數(shù)課時,為了讓學(xué)生能使用這兩個子程序庫,同時又不用在編程上花費過多的時間,開始著手用FORTRAN語言為學(xué)生編寫使用LINPACK和EISPACK的接口程序,他將這個程序取名為MATLAB,其名稱是由MATrix和 LABoratory(矩陣實驗室)兩個單詞的前三個字母所合成。 在1978年,Malab就面世了。這個程序獲得了很大的成功,受到了學(xué)生的廣泛歡迎。在以后的幾年里,Matlab在多所大學(xué)里作為教學(xué)輔助軟件使用,并作為面向大眾的免費軟件廣為流傳。,Cleve Moler,10,將MATLAB商品化的不是Cleve Moler,而是一個名叫Jack Little的人。
6、當(dāng)免費的MATLAB軟件到Stanford大學(xué),Jack Little正在該校主修控制,便接觸到了當(dāng)時MATLAB,直覺告訴他,這是一個具有巨大發(fā)展?jié)摿Φ能浖?。因此他在畢業(yè)沒多久,就開始用C語言重新編寫了MATLAB的核心。在Moler的協(xié)助下,于1984年成立MathWorks公司,首次推出MATLAB商用版。在其商用版推出的初期,MATLAB就以其優(yōu)秀的品質(zhì)(高效的數(shù)據(jù)計算能力和開放的體系結(jié)構(gòu))占據(jù)了大部分數(shù)學(xué)計算軟件的市場,原來應(yīng)用于控制領(lǐng)域里的一些封閉式數(shù)學(xué)計算軟件包(如英國的UMIST、瑞典的LUND和SIMNON、德國的KEDDC)就紛紛被淘汰或在MATLAB上重建。,Jack L
7、ittle,11,Cleve Moler至今仍是該公司的首席科學(xué)家,他以60多歲的高齡,還常常親自進行撰寫程序的工作,非常令人佩服。如果你有數(shù)值運算方面的高水平問題,寄到 MathWorks 后,大部份還是會由 Cleve Moler親自回答。在1994年,Pentium芯片曾發(fā)生Fdiv的bug, 當(dāng)時Cleve Moler是第一個以軟件方式解決此 bug的人,曾一時膾炙人口。,在公司初創(chuàng)的五年,Jack Little非常辛苦,常常身兼數(shù)職(董事長、總經(jīng)理、推銷、程序開發(fā)等),但公司一直穩(wěn)定發(fā)展,從當(dāng)初的一人公司,到1993年的200人,到2000年的 500余人,到2005年公司員工達到了
8、1300人,不但打敗其他競爭軟件,而且前景一片欣欣向榮。根據(jù)Jack Little個人說法,MATLAB早期成功的兩大因素是:選用了C語言及選定PC為主要平臺,這似乎和微軟的成功有相互呼應(yīng)之妙。,MathWorks公司,目前仍然是私人企業(yè),并未上市,這和Jack Little個人理念有關(guān),他認為MATLAB的設(shè)計方向應(yīng)該一直是以顧客的需求與軟件的完整性為首要目標(biāo),而不是以盈利為主要目的,因此MATLAB一直是在穩(wěn)定中求進步,而不會因為上市而遭受股東左右其發(fā)展方向。這也是為什么MATLAB新版本總是姍姍來遲的原因,因為他們不會因為市場的需求而推出不成熟的產(chǎn)品。此外,由于Jack Little保守
9、的個性,也使得MathWorks不曾跨足MATLAB/Simulink以外的行業(yè),當(dāng)前商場上紛紛擾擾的并購或分家,MathWorks完全是絕緣體。,12,1992年,支持Windows 3.x的MATLAB 4.0版本推出,增加了Simulink,Control,Neural Network,Signal Processing等專用工具箱。,1993年11月,MathWorks公司推出了Matlab 4.1,其中主要增加了符號運算功能。當(dāng)升級至Matlab 4.2c,這一功能在用戶中得到廣泛應(yīng)用。,1997年,Matlab 5.0版本問世了,實現(xiàn)了真正的32位運算,加快數(shù)值計算,圖形表現(xiàn)有效。
10、,2001年初,MathWorks公司推出了Matlab 6.0(R12)。,2002年7月,推出了Matlab 6.5(R13),在這一版本中Simulink升級到了5.0,性能有了很大提高,另一大特點是推出了JIT程序加速器,Matlab的計算速度有了明顯的提高。,2005年9月,推出了MAILAB 7.1(Release14 SP3),在這一版本中Simulink升級到了6.3,軟件性能有了新的提高,用戶界面更加友好。值得說明的是,Matlab V7.1版采用了更先進的數(shù)學(xué)程序庫,即“LAPACK”和“BLAS”。 目前,Matlab軟件支持多種系統(tǒng)平臺,如常見的WindowsNT/XP
11、、UNIX、Linux等。,Matlab版本的發(fā)展,13,MATLAB就是這樣經(jīng)過了近30年的專門打造、20多年的千錘百煉,它以高性能的數(shù)組運算(包括矩陣運算)為基礎(chǔ),不僅實現(xiàn)了大多數(shù)數(shù)學(xué)算法的高效運行函數(shù)和數(shù)據(jù)可視化,而且提供了非常高效的計算機高級編程語言,在用戶可參與的情況下,各種專業(yè)領(lǐng)域的工具箱不斷開發(fā)和完善,MATLAB取得了巨大的成功,已廣泛應(yīng)用于科學(xué)研究、工程應(yīng)用,用于數(shù)值計算分析、系統(tǒng)建模與仿真。 早在20世紀90年代初,歐美等發(fā)達國家的大學(xué)就將MATLAB列為一種必須掌握的編程語言。近幾年來,國內(nèi)的很多大學(xué)也將MATLAB列為了本科生必修課程。 與Maple、Mathemati
12、ca數(shù)學(xué)計算軟件相比,MATLAB以數(shù)值計算見長,而Maple等以符號運算見長,能給出解析解和任意精度解,而處理大量數(shù)據(jù)的能力遠不如MATLAB。 MATLAB軟件功能之強大、應(yīng)用之廣泛,已成為為21世紀最為重要的科學(xué)計算語言??梢妼W(xué)習(xí)掌握這一工具的重要性。,14,MATLAB產(chǎn)品由若干模塊組成,不同的模塊完成不同的功能,其中有:,實際上MATLAB本身就是一個極其豐富的資源庫,那么應(yīng)該從哪一部分開始著手、學(xué)習(xí)使用MATLAB呢?這就有必要了解這一軟件產(chǎn)品的體系結(jié)構(gòu) 。,MATLAB Compiler這種編譯器可以將MATLAB程序文件編譯生成標(biāo)準的C/C+語言文件,而生成的標(biāo)準的C/C+文件
13、可以被任何一種C/C+編譯器編譯生成函數(shù)庫或可執(zhí)行文件,以提高程序的運行效率。,1.2 MATLAB產(chǎn)品的體系結(jié)構(gòu),MATLAB,MATLAB Toolboxes,MATLAB Compiler,Simulink,Simulink Blocksets,Real-Time Workshop (RTW),Stateflow,Stateflow Coder,由這些模塊產(chǎn)品之間的關(guān)系可以圖1.1表示。,圖1.1 MATLAB產(chǎn)品體系結(jié)構(gòu),圍繞著MATLAB這個計算核心,形成了諸多針對不同應(yīng)用領(lǐng)域的算法程序包,被稱為專用工具箱(Toolbox),這些工具箱的列表以及每個工具箱的使用詳見MATLAB在線幫
14、助文檔。MATLAB本身所提供的工具箱大概有40多個,另外還有其他公司或研究單位開發(fā)提供的工具箱,這些工具箱的總數(shù)已有100多個,而且新的工具箱還在不斷增加。如果你有特別的應(yīng)用領(lǐng)域,可以首先到網(wǎng)上查找是否已有相關(guān)的工具箱,很可能已有人將你要做的應(yīng)用程序作成工具箱了。,Simulink是窗口圖形方式的、專門用于連續(xù)時間或離散時間的動態(tài)系統(tǒng)建模、分析和仿真的核心。,Real-Time Workshop是一種實時代碼生成工具,它能夠根據(jù)Simulink模型生成程序源代碼,并打包、編譯所生成的源代碼生成實時應(yīng)用程序。,從現(xiàn)有的Simulink 和Stateflow自動生成C語言程序代碼的功能、定點運算
15、模塊集(Fixed-point Blockset)與C語言程序代碼到VHDL(Very High Speed Integrated Circuit Hardware Description Language,一種標(biāo)準的硬件電路設(shè)計語言 )的自動轉(zhuǎn)換功能,可以看出,高級的系統(tǒng)仿真或低級的芯片算法設(shè)計,都可用MATLAB、Simulink、Stateflow及相關(guān)的工具箱來完成。,Stateflow是基于有限狀態(tài)機理論針對復(fù)雜的事件驅(qū)動系統(tǒng)進行建模、仿真的工具。,Stateflow Coder是基于Stateflow狀態(tài)圖生成高效、優(yōu)化的程序代碼。,圍繞著Simulink仿真核心所開發(fā)的應(yīng)用程序包
16、,稱為模塊集(Blocksets),MATLAB產(chǎn)品提供許多專用模塊集,如Communication Blockset、DSP Blockset、SimPowerSystem Blockset、Signal Processing Blockset等,詳見MATLAB在線幫助文檔。,MATLAB是MATLAB產(chǎn)品家族的計算核心與基礎(chǔ),是集高性能數(shù)值計算與數(shù)據(jù)可視化于一體的高效編程語言。,15,1.3 MATLAB編程語言的特點,語法規(guī)則簡單。尤其內(nèi)定的編程規(guī)則,與其他編程語言(如C、Fortran等)相比更接近于常規(guī)數(shù)學(xué)表示。對于數(shù)組變量的使用,不需類型聲明,無需事先申請內(nèi)存空間。,MATLAB
17、語言主要有以下幾個特點:,MATLAB基本的語言環(huán)境提供了數(shù)以千計的計算函數(shù),極大的提高了用戶的編程效率。如,一個fft函數(shù)即可完成對指定數(shù)據(jù)的快速傅里葉變換,這一任務(wù)如果用C語言來編程實現(xiàn)的話,至少要用幾十條C語言才能完成。,因此,MATLAB是一個簡單易用、功能強大的高效編程語言。,平臺無關(guān)性(可移植性)。MATLAB軟件可以運行在很多不同的計算機系統(tǒng)平臺上,如Windows Me/NT/2000/XP、很多不同版本的UNIX以及Linux。無論你在哪一個平臺上編寫的程序都可以運行在其它平臺上,對于MATLAB數(shù)據(jù)文件也一樣,是平臺無關(guān)的。極大保護了用戶的勞動、方便了用戶。其繪圖功能也是平
18、臺無關(guān)的。無論任何系統(tǒng)平臺,只要MATLAB能夠運行,其圖形功能命令就能正常運行。,MATLAB是一種腳本式(scripted)的解釋型語言,無論是命令、函數(shù)或變量,只要在命令窗口的提示符下鍵入,并“回車(Enter)”,MATLAB都予以解釋執(zhí)行。,16,功能強大 數(shù)值運算優(yōu)勢 符號運算優(yōu)勢(Maple) 強大的2D、3D數(shù)據(jù)可視化功能 許多具有算法自適應(yīng)能力的功能函數(shù),17,語言簡單、內(nèi)涵豐富 語言及其書寫形式非常接近于常規(guī)數(shù)學(xué)書寫形式; 其操作和功能函數(shù)指令就是常用的計算機和數(shù)學(xué)書上的一些簡單英文單詞表達的,如:help、clear等; 完備的幫助系統(tǒng),易學(xué)易用。 擴充能力、可開發(fā)能力較
19、強 MATLAB完全成了一個開放的系統(tǒng) 用戶可以開發(fā)自己的工具箱 可以方便地與Fortran、C等語言接口 編程易、效率高 Matlab以數(shù)組為基本計算單元 具有大量的算法優(yōu)化的功能函數(shù),18,2 MATLAB的桌面環(huán)境及入門知識,啟動與退出MATLAB 命令窗口及使用 數(shù)值表示、變量、表達式 命令歷史窗口 工作空間 獲取在線幫助,19,2.1 啟動與退出MATLAB,啟動MATLAB 直接用鼠標(biāo)雙擊桌面上MATLAB7.1圖標(biāo) 或Windows桌面的“開始”“所有程序”“MATLAB7.1” “MATLAB7.1”。 退出MATLAB 關(guān)閉MATLAB桌面 在命令窗口執(zhí)行quit或exit命令 MATLAB缺省桌面(見下頁),20,菜單欄,工具欄,文件編輯窗口,工作空間,歷史命令 窗口,Start 菜單,命令窗口,命令提示符,2.1 啟動與退出MATLAB (續(xù)),21,2.2 命令窗口的使用,激活命令窗口。 “” 與閃爍的光標(biāo)一起表明系統(tǒng)就緒,等待輸入。 命令窗口脫離MATLAB桌面。 簡單計算 【例2.2-1】計算 (1)在MATLAB命令窗口輸入 以下內(nèi)容: (12+2*(7-4)/32 (2)按【Enter】鍵,指令執(zhí)行。 (3)返回的計算結(jié)果: ans= 2,22,2.2 命令窗口 (續(xù)),說明 在命令窗口【* 次數(shù):1357533 已用完,請聯(lián)系開發(fā)者*