本書的主旨是讓讀者熟練掌握MATLAB,在解決工程應(yīng)用時,具備所需要的基本編程概念和技能。本書在函數(shù)、內(nèi)容與結(jié)構(gòu)、練習(xí)題、函數(shù)接口等方面較前一版有改動。全書分成兩大部分:第一部分講述用MATLAB進行程序設(shè)計及解決實際問題,包括MATLAB程序設(shè)計概念與組織、選擇、循環(huán)、字符串操作、單元陣列及結(jié)構(gòu)、高級文件輸入/輸出及高級函數(shù)等;第二部分針對實際應(yīng)用,包括用MATLAB繪圖、解線性代數(shù)方程組、進行基本統(tǒng)計、集合、排序和索引、處理聲音和圖像,以及高等數(shù)學(xué)中的曲線擬合、復(fù)數(shù)計算、微積分等。
MATLAB是MatrixLaboratory的簡寫,是一款由美國MathWorks公司開發(fā)的商業(yè)數(shù)學(xué)軟件,是一個集科學(xué)計算、可視化及交互式程序設(shè)計的計算環(huán)境。它將數(shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化及非線性動態(tài)系統(tǒng)的建模和仿真等諸多功能,集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計及需要有效數(shù)值計算的學(xué)科領(lǐng)域提供了方便,在一定程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言的編譯模式,簡化了計算形式,所以有很好的工程應(yīng)用背景。
作者斯托米?阿塔韋(StormyAttaway),在美國波士頓大學(xué)機械工程系工作,是該系教學(xué)副主任。二十多年來一直是波士頓大學(xué)工程計算課程的課程協(xié)調(diào)人,她本人講授過許多不同計算機語言及軟件包方面的程序設(shè)計課程,具有豐富的教學(xué)及實踐經(jīng)驗。
本書是美國許多大學(xué)的理工科學(xué)生的教學(xué)用書,深受學(xué)生歡迎。全書講解深入淺出,圍繞實際工程應(yīng)用,通過解釋MATLAB強大的函數(shù)功能,實現(xiàn)用MATLAB進行編程。它使工程技術(shù)人員能夠全面理解和掌握如何利用MATLAB解決工程實際問題。與傳統(tǒng)的專業(yè)程序設(shè)計概念不同,MATLAB程序設(shè)計強調(diào)的是用貼近人們?nèi)粘A?xí)慣的數(shù)學(xué)書寫方式快速解決實際問題,所以它并不像專業(yè)程序設(shè)計那樣突出語法規(guī)范和參數(shù)定義規(guī)則。
國內(nèi)外有不少關(guān)于MATLAB方面的書,但有特色的較少,斯托米?阿塔韋(StormyAttaway)撰寫的這本是比較有特色的書之一。本書主要以MATLAB函數(shù)調(diào)用為主線,采用靈活的方式介紹程序設(shè)計概念,并能將其用于解決實際問題,比較適合廣大非計算機專業(yè)學(xué)生作為程序設(shè)計課程的教材。書中第一部分主要講述的就是這些內(nèi)容,包括:MATLAB簡介及MATLAB程序設(shè)計、程序控制語句類的選擇和循環(huán)、MATLAB程序組織形式、字符串操作、程序設(shè)計中對加工對象數(shù)據(jù)的結(jié)構(gòu)組織(單元陣列及結(jié)構(gòu))、高級文件輸入/輸出及高級函數(shù)等。當(dāng)然,本書也可以作為工程技術(shù)人員解決實際問題的參考書。書中第二部分內(nèi)容涉及的主要就是實際應(yīng)用,包括用MATLAB繪圖、解線性代數(shù)方程組、進行基本統(tǒng)計、集合、排序和索引、處理聲音和圖像,以及高等數(shù)學(xué)中的曲線擬合、復(fù)數(shù)計算、微積分等。
全書章節(jié)安排合理,內(nèi)容規(guī)劃有助于學(xué)生理解和記憶,編寫生動有趣,書中隨時采用一些問答題的方式講述基本概念,容易引起讀者的注意;通過例題和練習(xí)題講解關(guān)鍵知識點并加深學(xué)生的記憶;對比用編程方法和直接調(diào)用內(nèi)部函數(shù)的快速方法,加深理解MATLAB內(nèi)部函數(shù)的作用;每章末尾總結(jié)通常易犯的錯誤,提供程序設(shè)計風(fēng)格指南以及本章中用到的MATLAB函數(shù)和命令。通過解決實際問題來講解知識點的方式容易激發(fā)學(xué)生的學(xué)習(xí)興趣。
對于非計算機專業(yè)的理工科大學(xué)生來說,把MATLAB作為第一門算法語言,繞開了冗長復(fù)雜的程序設(shè)計概念細節(jié),容易使學(xué)生掌握,并能在線性代數(shù)等課程及實際中應(yīng)用。所以我們認為本書的教學(xué)和使用效果比較好。
本書的翻譯出版是由電子工業(yè)出版社的馬嵐編輯和楊博編輯組織策劃的。西安電子科技大學(xué)魚濱老師和趙元哲老師在第二版的基礎(chǔ)上進行了翻譯和校對。其中趙元哲翻譯和校對了前7章,魚濱翻譯和校對了第8章到第14章;宋力老師參加了部分翻譯工作,研究生李孟鴿、袁丹、趙劼等參加了翻譯和文字錄入工作。原書中一些筆誤的地方,翻譯時都進行了更正,并對代碼進行了驗證。
希望本書的翻譯出版能夠為廣大MATLAB的使用者提供方便,但由于我們水平所限,書中錯誤之處在所難免,歡迎讀者批評指正!
譯者2016年11月
前言
目標
本書的目的是把MATLAB作為一種工具使用,講解解決基本問題所需的基本編程概念和技能。MATLAB是一款功能強大的軟件,它包含完成從數(shù)學(xué)運算到三維成像多種任務(wù)的內(nèi)置函數(shù)。另外,MATLAB擁有一套完整的編程結(jié)構(gòu),允許用戶定制自己的程序規(guī)范。
介紹MATLAB的書有很多。這些書有兩個基本特色:一些書除了一到兩章介紹一些程序概念之外,主要闡述MATLAB中內(nèi)置函數(shù)的使用;另一些書僅僅覆蓋了編程結(jié)構(gòu),而沒有涉及使MATLAB得到有效使用的許多內(nèi)置函數(shù)。僅僅學(xué)習(xí)內(nèi)置函數(shù)的讀者能很好地使用MATLAB,但是不能理解基本的編程概念。因而對沒有學(xué)習(xí)其他入門課程或沒有閱讀其他關(guān)于編程概念的書的讀者,很難進一步學(xué)習(xí)C++或Java等編程語言。相反,首先只學(xué)習(xí)編程概念(使用任何語言)的讀者傾向于使用高效率的控制語句來解決問題,并沒有意識到在MATLAB中,許多情況下并不需要這樣做。
本書采取一種混合式的方法,同時介紹編程和有效用法。學(xué)生們面臨的挑戰(zhàn)是幾乎不能預(yù)測他們將來是否需要知道編程概念,或者像MATLAB這樣的軟件包是否能滿足他們的職業(yè)需要。因而,對入門的學(xué)生來說,最好的方法就是同時給出編程概念和有效的內(nèi)置函數(shù)。因為MATLAB非常容易使用,應(yīng)用這種混合式方法來講授編程和解決問題是一個完美的平臺。
因為編程概念在本書中是非常關(guān)鍵的,所以本書的重點不是放在MATLAB的每個新版本如何節(jié)省時間的特點上。例如,在當(dāng)前的MATLAB版本中,統(tǒng)計數(shù)字變量顯示在工作臺窗口中。在本書中沒有顯示任何細節(jié),因為這一特點是否可用取決于軟件的版本,而且本書是以解釋概念為目的的。
第三版修訂的內(nèi)容
本書第三版的修改包括:
1.每章結(jié)束新增了“探索其他有趣特征”部分,列舉了讀者可能希望了解的相關(guān)語言結(jié)構(gòu)、函數(shù)和工具。
2.擴大覆蓋范圍:
●圖像處理,包括圖像矩陣中不同數(shù)據(jù)類型的使用
●繪圖功能,包括了那些使用對數(shù)尺的函數(shù)
●圖形用戶界面
3.MATLAB的R2012b版本的使用。
4.修訂和新增“練習(xí)”問題。
5.修訂并新增了有些章末的習(xí)題,使其更具有挑戰(zhàn)性。
6.一些材料的重組,主要是:
●將向量和矩陣單獨作為一章(第2章),包括向量和矩陣的函數(shù)和操作符,并安排了向量化代碼
●更早給出了矩陣乘法(在第2章)
●向量化代碼放在循環(huán)章節(jié),為了比較數(shù)組的循環(huán)使用和向量化代碼
7.用randi代替round(rand)。
8.用true/false代替logical(1)/logical(0)。
9.擴大了基礎(chǔ)數(shù)學(xué)函數(shù)的覆蓋范圍,包括mod、sqrt、nthroot、log、log2和log10,以及更多的三角函數(shù)。
10.新增附錄列出了書中用到的所有函數(shù),以及讀者或許想要了解的工具箱。
主要特點
編程概念和內(nèi)置函數(shù)并行
本書最重要和獨特的特點是并行地講授MATLAB中的編程概念和內(nèi)置函數(shù)的使用。本書以基本的編程概念開始,例如變量、賦值、輸入/輸出、選擇和循環(huán)語句。本書通常先介紹一個問題然后使用“編程概念”和“有效方法”來解決。
系統(tǒng)方法
本書的另一個特點是采用系統(tǒng)的、逐步的方法將概念貫穿于全書中。在一個MATLAB教材中提前使用注釋“我們將在以后介紹”來顯示內(nèi)置函數(shù)或特點是很常用的做法。本書并不這樣做,在例子中需要用到的函數(shù)在之前就已經(jīng)介紹過了。另外,對基本的編程概念將仔細和系統(tǒng)地解釋。例如,通過循環(huán)來計算總和、條件循環(huán)中的計數(shù)和差錯檢測這些非;镜母拍,在其他書中并不會介紹,但都包含在本書中。
文件輸入/輸出
工程和科學(xué)中的許多應(yīng)用涉及操縱大量的數(shù)據(jù)集,這些數(shù)據(jù)集存儲在外部文件中。大部分MATLAB書至少要提到save和load函數(shù),并且在一些例子中也會提到低層的文件輸入/輸出函數(shù)。因為文件輸入和輸出對許多應(yīng)用來說是非;A(chǔ)的,所以本書將覆蓋幾種低層的文件輸入/輸出函數(shù),以及從電子表格文件中讀數(shù)據(jù)和將數(shù)據(jù)寫到電子表格文件中。在以后的章節(jié)中還將處理音頻和圖像文件。這些文件輸入/輸出的概念將逐步介紹:首先在第3章中介紹load和save,然后在第9章中介紹低層函數(shù),最后在第13章中介紹聲音和圖像。
用戶自定義函數(shù)
用戶自定義函數(shù)是一個非常重要的編程概念。許多時候,函數(shù)類型、函數(shù)調(diào)用與函數(shù)頭等之間的細微差別,容易被初學(xué)者混淆。因此本書將逐步介紹這些概念。首先,在第3章中闡述計算和返回一個單精度值的最容易理解的函數(shù)類型;然后,無返回值的函數(shù)和返回多個值的函數(shù)在第6章中介紹;最后,第10章介紹高級函數(shù)的特點。
高級編程概念
除了基本的編程概念,本書中還覆蓋了一些高級編程概念,如字符串操作、數(shù)據(jù)結(jié)構(gòu)、遞歸、匿名函數(shù)和函數(shù)參數(shù)的變量數(shù)目。另外也會介紹排序、查找和索引。所有這些也采取了系統(tǒng)的方法,例如單元數(shù)組在應(yīng)用于文件輸入函數(shù)和作為餅圖的圖例之前介紹。
解決問題的工具
除了編程概念,解決問題的一些必要的基礎(chǔ)數(shù)學(xué)知識也將涉及。主要包括統(tǒng)計函數(shù)、求解線性代數(shù)方程組和數(shù)據(jù)擬合曲線。另外還將介紹復(fù)數(shù)和一些計算(積分和微分)的使用。闡述基礎(chǔ)數(shù)學(xué),描述在MATLAB中執(zhí)行這些任務(wù)的內(nèi)置函數(shù)。
作圖、圖像和GUI
本書首先介紹簡單的二維作圖(第3章),這樣作圖的例子可以貫穿全書。第11章將給出更多的作圖類型并闡述定制作圖和在MATLAB中怎樣處理圖形屬性,這一章使用字符串和單元(cell)數(shù)組來定制標簽。在第13章中對圖像處理和理解圖形用戶界面(GUI)編程的基礎(chǔ)知識進行介紹。
向量化代碼
MATLAB內(nèi)置操作符和函數(shù)功能的有效使用都在書中做了演示。為了強調(diào)有效使用MATLAB的重要性,對編寫向量化代碼所需的概念和內(nèi)置函數(shù)提前到了第2章。然后在第5章中采用一些技巧如預(yù)先分配向量和使用邏輯向量,替代向量和矩陣中的選擇語句和循環(huán)語句。同時還介紹了怎樣才能使代碼有效的方法。
全書布局
全書分為兩部分。第一部分介紹編程結(jié)構(gòu),并闡述編程與解決問題的內(nèi)置函數(shù)的有效使用。第二部分講述應(yīng)用,包括作圖、圖像處理和解決基礎(chǔ)問題所需要的數(shù)學(xué)知識。前6章包括MATLAB中和編程中非常
收起全部↑
魚濱,男,博士,西安電子科技大學(xué)計算機學(xué)院教授,碩士生導(dǎo)師。早年為西北大學(xué)軟件學(xué)院副院長,曾赴意大利作為訪問學(xué)者一年,后被西電出國優(yōu)秀博士計劃引進。
主要研究方向為軟件工程,醫(yī)學(xué)影像處理(國家自然基金項目),基于Internet的軟件技術(shù),pi演算,虛擬現(xiàn)實,andriod視頻采集等。曾獲省部級獎三項,發(fā)表論文多篇。負責(zé)國家自然科學(xué)基金項目一項(2012-2015),參加國家自然科學(xué)基金重點課題和面上項目各一項,承擔(dān)本科生地“軟件工程”和“編譯原理”課程。2001年獲陜西省教學(xué)成果一等獎。