MATLAB 語(yǔ)言及其應(yīng)用_第1頁(yè)
MATLAB 語(yǔ)言及其應(yīng)用_第2頁(yè)
MATLAB 語(yǔ)言及其應(yīng)用_第3頁(yè)
MATLAB 語(yǔ)言及其應(yīng)用_第4頁(yè)
MATLAB 語(yǔ)言及其應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩255頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

MATLAB語(yǔ)言及其應(yīng)用

1第一講

Matlab概述1.1前言1.2Matlab軟件概述1.3Matlab的桌面環(huán)境及入門知識(shí)21.1Matlab簡(jiǎn)介在歐美各高等院校,Matlab已經(jīng)成為線性代數(shù)、數(shù)值分析、數(shù)理統(tǒng)計(jì)、自動(dòng)控制理論、數(shù)字信號(hào)處理、時(shí)間序列分析、動(dòng)態(tài)系統(tǒng)仿真、圖像處理等課程的基本教學(xué)工具。Matlab是一種廣泛應(yīng)用于工程計(jì)算及數(shù)值分析領(lǐng)域的新型高級(jí)語(yǔ)言,自1984年推向市場(chǎng)以來(lái),歷經(jīng)二十多年的發(fā)展與競(jìng)爭(zhēng),現(xiàn)已成為國(guó)際公認(rèn)的最優(yōu)秀的工程應(yīng)用開發(fā)環(huán)境。3

Matlab:MatrixLaboratory矩陣實(shí)驗(yàn)室

Matlab發(fā)展1.1Matlab簡(jiǎn)介20047201284MATLABCompiler這種編譯器可以將MATLAB程序文件編譯生成標(biāo)準(zhǔn)的C/C++語(yǔ)言文件,而生成的標(biāo)準(zhǔn)的C/C++文件可以被任何一種C/C++編譯器編譯生成函數(shù)庫(kù)或可執(zhí)行文件,以提高程序的運(yùn)行效率。1.2MATLAB產(chǎn)品的體系結(jié)構(gòu)

MATLABMATLABToolboxesMATLABCompilerSimulinkSimulinkBlocksetsReal-TimeWorkshop(RTW)StateflowStateflowCoder圖1.1MATLAB產(chǎn)品體系結(jié)構(gòu)圍繞著MATLAB這個(gè)計(jì)算核心,形成針對(duì)不同應(yīng)用領(lǐng)域的算法程序包,稱為專用工具箱(Toolbox)。MATLAB本身所提供的工具箱大概有40多個(gè),另外還有其他公司或研究單位開發(fā)提供的工具箱,這些工具箱的總數(shù)已有100多個(gè),而且新的工具箱還在不斷增加。如果你有特別的應(yīng)用領(lǐng)域,可以首先到網(wǎng)上查找是否已有相關(guān)的工具箱,很可能已有人將你要做的應(yīng)用程序作成工具箱了。Simulink是窗口圖形方式的、專門用于連續(xù)時(shí)間或離散時(shí)間的動(dòng)態(tài)系統(tǒng)建模、分析和仿真的核心。Real-TimeWorkshop是一種實(shí)時(shí)代碼生成工具,它能夠根據(jù)Simulink模型生成程序源代碼,并打包、編譯所生成的源代碼生成實(shí)時(shí)應(yīng)用程序。從現(xiàn)有的Simulink和Stateflow自動(dòng)生成C語(yǔ)言程序代碼的功能、定點(diǎn)運(yùn)算模塊集(Fixed-pointBlockset)與C語(yǔ)言程序代碼到VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,一種標(biāo)準(zhǔn)的硬件電路設(shè)計(jì)語(yǔ)言

)的自動(dòng)轉(zhuǎn)換功能,可以看出,高級(jí)的系統(tǒng)仿真或低級(jí)的芯片算法設(shè)計(jì),都可用MATLAB、Simulink、Stateflow及相關(guān)的工具箱來(lái)完成。Stateflow是基于有限狀態(tài)機(jī)理論針對(duì)復(fù)雜的事件驅(qū)動(dòng)系統(tǒng)進(jìn)行建模、仿真的工具。StateflowCoder是基于Stateflow狀態(tài)圖生成高效、優(yōu)化的程序代碼。圍繞著Simulink仿真核心所開發(fā)的應(yīng)用程序包,稱為模塊集(Blocksets),MATLAB產(chǎn)品提供許多專用模塊集,如CommunicationBlockset、DSPBlockset、SimPowerSystemBlockset、SignalProcessingBlockset等,詳見MATLAB在線幫助文檔。是MATLAB產(chǎn)品家族的計(jì)算核心與基礎(chǔ),是集高性能數(shù)值計(jì)算與數(shù)據(jù)可視化于一體的高效編程語(yǔ)言。5功能強(qiáng)大數(shù)值運(yùn)算優(yōu)勢(shì)符號(hào)運(yùn)算優(yōu)勢(shì)(Maple)強(qiáng)大的2D、3D數(shù)據(jù)可視化功能許多具有算法自適應(yīng)能力的功能函數(shù)編程易、效率高

Matlab以數(shù)組為基本計(jì)算單元具有大量的算法優(yōu)化的功能函數(shù)6語(yǔ)言簡(jiǎn)單、內(nèi)涵豐富語(yǔ)言及其書寫形式非常接近于常規(guī)數(shù)學(xué)書寫形式;其操作和功能函數(shù)指令就是常用的計(jì)算機(jī)和數(shù)學(xué)書上一些簡(jiǎn)單英文單詞,如:help、clear等;完備的幫助系統(tǒng),易學(xué)易用。擴(kuò)充能力、可開發(fā)能力較強(qiáng)MATLAB完全成了一個(gè)開放的系統(tǒng)用戶可以開發(fā)自己的工具箱可以方便地與Fortran、C等語(yǔ)言接口

71.3MATLAB的桌面環(huán)境及入門知識(shí)啟動(dòng)與退出MATLAB命令窗口及使用數(shù)值表示、變量、表達(dá)式命令歷史窗口工作空間獲取在線幫助8菜單欄工具欄文件編輯窗口工作空間歷史命令窗口Start菜單命令窗口命令提示符1.3.1啟動(dòng)與退出91.3.2命令窗口的使用激活命令窗口?!?gt;>”與閃爍的光標(biāo)一起表明系統(tǒng)就緒,等待輸入。命令窗口脫離MATLAB桌面。簡(jiǎn)單計(jì)算【例1.1】計(jì)算(1)在MATLAB命令窗口輸入以下內(nèi)容:>>(12+2*(7-4))/3^2(2)按【Enter】鍵,指令執(zhí)行。(3)返回的計(jì)算結(jié)果:ans=2

101.3.2命令窗口(續(xù))〖說明〗在命令窗口【Enter】鍵提交命令執(zhí)行。Matlab所用運(yùn)算符(如+、-、^等)是各種計(jì)算程序中常見的。計(jì)算結(jié)果中的“ans”是英文“answer”的一種縮寫,其含義就是“運(yùn)算答案”。ans是Matlab的一個(gè)預(yù)定義變量。111.3.2命令窗口(續(xù))簡(jiǎn)單計(jì)算(續(xù))【例1.2】計(jì)算sin(45?)>>sin(45*pi/180)Matlab中正弦函數(shù)sin就是常見的正弦函數(shù)。它的參數(shù)值是以“弧度”為單位的。pi也是Matlab的預(yù)定義變量。pi=3.14159…Matlab對(duì)字母大小寫是敏感的?!纠?.3】計(jì)算的值,其中x=4.92。

>>sqrt(2*exp(4.92+0.5)+1)Matalb中開平方—sqrt(x),是英文squareroot的縮寫

。Matlab中指數(shù)函數(shù)exp(x),常見的表達(dá)方式。ans=0.7071ans=21.2781121.3.2命令窗口

(續(xù))“clc”清除窗口顯示內(nèi)容的命令?!纠?.4】計(jì)算的值。

>>y=2*sin(0.3*pi)/(1+sqrt(5))y=0.5000【例1.5】計(jì)算的值。

>>y=2*cos(0.3*pi)/(1+sqrt(5))y=0.3633命令行編輯

“↑”鍵調(diào)回已輸入過命令。修改。以上兩例,命令行中用到了等號(hào)“=”。計(jì)算結(jié)果不再賦給“ans”,而是賦給用戶指定的變量y。無(wú)論是預(yù)定義變量還是用戶自定義變量都被存儲(chǔ)在系統(tǒng)的工作空間內(nèi),即系統(tǒng)定義的一個(gè)存儲(chǔ)窗口變量的內(nèi)存空間。Who、whos命令用來(lái)顯示工作空間的變量clear命令用來(lái)清除工作空間的變量。13>>who>>whosYourvariablesare:ansyNameSizeBytesClassans1x18doublearrayy1x18doublearrayGrandtotalis2elementsusing16bytes1.3.2命令窗口

(續(xù))141.3.2命令窗口

(續(xù))>>cleary>>whoYourvariablesare:ans

>>whosYourvariablesare:NameSizeBytesClassans1x18doublearrayGrandtotalis1elementsusing8bytes15數(shù)值顯示格式設(shè)置缺省顯示格式:簡(jiǎn)潔的短(shortg)格式窗口命令及語(yǔ)法格式:format顯示格式關(guān)鍵字如:formatlong%15位數(shù)字顯示常見通用命令命令 含義clc 清除命令窗口的顯示內(nèi)容clear 清除Matlab工作空間中保存的變量who或whos 顯示Matlab工作空間中的變量信息dir 顯示當(dāng)前工作目錄的文件和子目錄清單cd 顯示或設(shè)置當(dāng)前工作目錄type 顯示指定m文件的內(nèi)容help或doc 獲取在線幫助quit或exit 關(guān)閉/推出MATALB1.3.2命令窗口

(續(xù))161.3.3工作空間查看工作空間內(nèi)存變量,可以由who、whos。命名新變量。修改變量名刪除變量繪圖保存變量數(shù)據(jù)裝入數(shù)據(jù)171.3.4歷史窗口歷史窗口:首先記錄每次啟動(dòng)時(shí)間并記錄在命令窗口輸入命令,此次運(yùn)行期間,輸入的所有命令被記錄為一組,并以此次啟動(dòng)時(shí)間為標(biāo)志。使用歷史窗口:可以查看命令窗口輸入過的命令或語(yǔ)句可以選擇一條或多條命令執(zhí)行拷貝、執(zhí)行、創(chuàng)建M文件等。要清除歷史記錄,可以選擇Edit菜單中的ClearCommandHistory命令181.3.5當(dāng)前目錄窗口和搜索路徑當(dāng)前目錄窗口:指Matlab運(yùn)行時(shí)的工作目錄。只有在當(dāng)前目錄和搜索路徑下的文件、函數(shù)才可以被運(yùn)行和調(diào)用。如果沒有特殊指明,數(shù)據(jù)文件也將存放在當(dāng)前目錄下;用戶可以將自己的工作目錄設(shè)置成當(dāng)前目錄,從而使得所有操作都在當(dāng)前目錄中進(jìn)行。19搜索路徑:指Matlab執(zhí)行過程中對(duì)變量、函數(shù)和文件進(jìn)行搜索的路徑。在File菜單中選擇SetPath命令或在命令窗口輸入pathtool命令,出現(xiàn)搜索路徑設(shè)置對(duì)話框:!修改完搜索路徑后,需要進(jìn)行保存。201.3.6獲取在線幫助MATLAB提供的幫助信息有兩類簡(jiǎn)單純文本幫助信息helplookfor(條件比較寬松)例:inverse窗口式綜合幫助信息(文字、公式、圖形)dochelpwin21【功能演示-1】求方程的全部根。p=[2,0,-3,71,-9,13];%建立多項(xiàng)式系數(shù)向量x=roots(p);求根x=-3.49141.6863+2.6947i1.6863-2.6947i0.0594+0.4251i0.0594-0.4251i22【功能演示-2】求解線性方程組a=[2,3,-1;8,2,3;45,3,9];%建立系數(shù)矩陣ab=[2;4;23];%建立列向量bx=inv(a)*bx=0.55310.2051-0.278423符號(hào)計(jì)算symsxyz

%建立符號(hào)變量[x,y,z]=solve(2*x+3*y-z-2,8*x+2*y+3*z-4,45*x+3*y+9*z-23)x=151/273y=8/39z=-76/27324【功能演示-3】求解定積分

求解I=quad('x.*log(1+x)',0,1)ans=0.250或symsxint(x*log(1+x),0,1)ans=1/425【功能演示-4】多項(xiàng)式曲線擬合考慮如下x-y一組實(shí)驗(yàn)數(shù)據(jù):x=[1,2,3,4,5,6,7,8,9,10]y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2]注:一次多項(xiàng)式擬合:p1=polyfit(x,y,1)三次多項(xiàng)式擬合:p3=polyfit(x,y,3)plot原始數(shù)據(jù)、一次擬合曲線和三次擬合曲線x2=1:0.1:10;y1=polyval(p1,x2)y3=polyval(p3,x2)plot(x,y,’*’,x2,y1,‘:’,x2,y3)26擬合曲線圖由圖可見,三次擬合結(jié)果較好。27第二講Matlab數(shù)據(jù)及其運(yùn)算Matlab數(shù)據(jù)類型非常豐富,除數(shù)值型、字符型等基本數(shù)據(jù)類型外,還有結(jié)構(gòu)體、單元等更為復(fù)雜的數(shù)據(jù)類型。各種數(shù)據(jù)類型都以矩陣形式存在,矩陣是Matlab最基本的數(shù)據(jù)對(duì)象,并且矩陣的運(yùn)算是定義在復(fù)數(shù)域上的。282.1數(shù)值表示、變量及表達(dá)式數(shù)值的記述

只采用習(xí)慣的十進(jìn)制表示,可以帶小數(shù)點(diǎn)和負(fù)號(hào);其缺省的數(shù)據(jù)類型為雙精度浮點(diǎn)型(double)。例如:3-100.0011.3e101.256e-6變量命令規(guī)則變量名、函數(shù)名對(duì)字母的大小寫是敏感的。如myVar與myvar表示兩個(gè)不同的變量。變量名第一個(gè)字母必須是英文字母。變量名可以包含英文字母、下劃線和數(shù)字。變量名不能包含空格、標(biāo)點(diǎn)。變量名最多可包含63個(gè)字符(6.5及以后的版本)。292.1數(shù)值表示、變量及表達(dá)式(續(xù))Matlab預(yù)定義的變量變量名意義ans最近的計(jì)算結(jié)果的變量名epsMATLAB定義的正的極小值=2.2204e-16pi圓周率πinf∞值,無(wú)限大i

j虛數(shù)單元,sqrt(-1)NaN非數(shù),0/0、∞/∞〖說明〗每當(dāng)MATLAB啟動(dòng)完成,這些變量就被產(chǎn)生。MATLAB中,被0除不會(huì)引起程序中斷,給出報(bào)警的同時(shí)用inf或NaN給出結(jié)果。用戶只能臨時(shí)覆蓋這些預(yù)定義變量的值,Clear或重啟MATLAB可恢復(fù)其值。302.1數(shù)值表示、變量及表達(dá)式(續(xù))運(yùn)算符和表達(dá)式運(yùn)算數(shù)學(xué)表達(dá)式MATLAB運(yùn)算符MATLAB表達(dá)式加a+b+a+b減a-b-a-b乘axb*a*b除a/b或a\b/或\a/b或a\b冪ab^a^b〖說明〗Matlab用“\”和”/”分別表示“左除”和“右除”。對(duì)標(biāo)量而言,兩者沒有區(qū)別。對(duì)矩陣產(chǎn)生不同影響。MATLAB表達(dá)式的書寫規(guī)則與“手寫方式”幾乎完全相同。表達(dá)式按與常規(guī)相同的優(yōu)先級(jí)自左至右執(zhí)行運(yùn)算。優(yōu)先級(jí):指數(shù)運(yùn)算級(jí)別最高,乘除次之,加減最低。括號(hào)改變運(yùn)算的次序。312.1數(shù)值表示、變量及表達(dá)式(續(xù))復(fù)數(shù)及其運(yùn)算MATLAB中復(fù)數(shù)的表達(dá):z=a+bi,其中a、b為實(shí)數(shù)。MATLAB把復(fù)數(shù)作為一個(gè)整體,像計(jì)算實(shí)數(shù)一樣計(jì)算復(fù)數(shù)。【例2.1】復(fù)數(shù)z1=3+4i,z2=1+2i,z3=計(jì)算z1=3+4*i,z2=1+2*i,z3=2*exp(i*pi/6),z=z1*z2/z3z_real=real(z),z_image=imag(z),z_angle=angle(z),z_length=abs(z),322.2Matlab矩陣(數(shù)組)數(shù)組的概念一維數(shù)組變量的創(chuàng)建二維數(shù)組變量的創(chuàng)建數(shù)組元素的標(biāo)識(shí)與尋訪數(shù)組運(yùn)算多維數(shù)組332.2.1數(shù)組(array)的概念數(shù)組定義:按行和列順序排列的實(shí)數(shù)或復(fù)數(shù)的有序集,被稱為數(shù)組。數(shù)組中的任何一個(gè)數(shù)都被稱為這個(gè)數(shù)組的元素,由其所在的行和列標(biāo)識(shí),這個(gè)標(biāo)識(shí)也稱為數(shù)組元素的下標(biāo)或索引。Matlab將標(biāo)量視為1×1的數(shù)組。對(duì)m行、n列的2維數(shù)組a:計(jì)為m×n的數(shù)組a;*行標(biāo)識(shí)、列標(biāo)識(shí)均從1開始;行標(biāo)識(shí)從上到下遞增;列標(biāo)識(shí)從左到右遞增。12345222232425332333435442434445a(3,4)=34rowisfirsta=34數(shù)組的分類一維數(shù)組,也稱為向量(vector)。行向量(rowvector)、列向量(columnvector)。二維數(shù)組(矩陣matrix)。多維數(shù)組。有效矩陣:每行元素的個(gè)數(shù)必須相同,每列元素的個(gè)數(shù)也必須相同。2.2.1.數(shù)組(array)的概念352.2.1數(shù)組(array)的概念(續(xù))行向量列向量a(2,1)=3a(1,2)=2b(3)=3c(2)=2362.2.2創(chuàng)建一維數(shù)組變量第一種方法:使用方括號(hào)“[]”操作符【例2.2】創(chuàng)建數(shù)組(行向量)a=[13pi3+5i]>>a=[13pi3+5*i]

%ora=[1,3,pi,3+5*i]

a=1.00003.00003.14163.0000+5.0000i所有的向量元素必須在操作符“[]”之內(nèi);向量元素間用空格或英文的逗點(diǎn)“,”分開。第二種方法:使用冒號(hào)“:”操作符【例2.3】創(chuàng)建以1~10順序排列整數(shù)為元素的行向量b。>>b=1:10b=12345678910372.2.2、創(chuàng)建一維數(shù)組變量(續(xù))利用冒號(hào)“:”操作符創(chuàng)建行向量的基本語(yǔ)法格式:x=Start:Increment:EndStart新向量x的第一個(gè)元素;最后一個(gè)元素不能大于EndIncrement可正可負(fù)若Increment=1,則可簡(jiǎn)寫為:x=Start:End?!纠?.4】鍵入并執(zhí)行c=1:2:10和d=1:2:9>>c=1:2:10c=13579>>d=1:2:9d=13579382.2.2、創(chuàng)建一維數(shù)組變量(續(xù))第三種方法:利用函數(shù)linspace函數(shù)linspace的基本語(yǔ)法x=linspace(x1,x2,n)該函數(shù)生成一個(gè)由n個(gè)元素組成的行向量;x1為其第一個(gè)元素;x2為其最后一個(gè)元素;x1、x2之間元素的間隔=(x2-x1)/(n-1)。如果忽略參數(shù)n,則系統(tǒng)默認(rèn)生成100個(gè)元素的行向量【例2.5】鍵入并執(zhí)行x=linspace(1,2,5)x=1.00001.25001.50001.75002.0000同學(xué)們可以在實(shí)驗(yàn)時(shí)察看x=linspace(1,2)執(zhí)行結(jié)果。392.2.2、創(chuàng)建一維數(shù)組變量(續(xù))第四種方法:利用函數(shù)logspace通過實(shí)驗(yàn)認(rèn)識(shí)該函數(shù)的功能。列向量的創(chuàng)建使用方括號(hào)“[]”操作符,使用分號(hào)“;”分割行?!纠?-5】鍵入并執(zhí)行x=[1;2;3]X=123使用冒號(hào)操作符【例2-6】鍵入并執(zhí)行x=(1:3)’%“’”表示矩陣的轉(zhuǎn)置402.2.2、創(chuàng)建一維數(shù)組變量(續(xù))創(chuàng)建數(shù)組變量的一般方法創(chuàng)建變量的賦值語(yǔ)句的一般格式var=expressionvar為變量名expression為MATLAB合法表達(dá)式可以是單獨(dú)的常數(shù)值或數(shù)值數(shù)組;也可以由常數(shù)值、其他變量(部分或全部)、數(shù)值數(shù)組和運(yùn)算符(+、-等)構(gòu)成?!纠?-7】鍵入并執(zhí)行a=[01+6];b=[a67];c=[6a7];d=[6a7a];412.2.3、創(chuàng)建二維數(shù)組變量第一種方法:使用方括號(hào)“[]”操作符使用規(guī)則數(shù)組元素必須在“[]”內(nèi)鍵入;行與行之間須用分號(hào)“;”間隔,也可以在分行處用回車鍵間隔;行內(nèi)元素用空格或逗號(hào)“,”間隔?!纠?.8】鍵入并執(zhí)行a2=[123;456;789]a2=123456789【例2.9】鍵入并執(zhí)行a2=[1:3;4:6;7:9]%結(jié)果同上422.2.3、創(chuàng)建二維數(shù)組變量(續(xù))【例2.10】由向量構(gòu)成二維數(shù)組。>>a=[123];b=[234];>>c=[a;b];>>c1=[ab];第二種方法:函數(shù)方法函數(shù)ones(生成全1矩陣)、zeros(生成全0矩陣)、reshape“helpelmat”獲得基本的矩陣生成和操作函數(shù)列表【例2.11】創(chuàng)建全1的3x3數(shù)組。>>ones(3)【例2.12】創(chuàng)建全1的3x4數(shù)組。>>ones(3,4)432.2.3、創(chuàng)建二維數(shù)組變量(續(xù))【例2.13】reshape的使用演示>>a=-4:4a=-4-3-2-101234>>b=reshape(a,3,3)b=-4-12-303-214數(shù)組元素的排列順序,從上到下按列排列,先排第一列,然后第二列,…要求數(shù)組的元素總數(shù)不變。442.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪數(shù)組元素的標(biāo)識(shí)“全下標(biāo)(index)”標(biāo)識(shí)如對(duì)于二維數(shù)組,用“行下標(biāo)和列下標(biāo)”標(biāo)識(shí)數(shù)組的元素,a(2,3)就表示二維數(shù)組a的“第2行第3列”的元素。對(duì)于一維數(shù)組,用一個(gè)下標(biāo)即可,b(2)表示一維數(shù)組b的第2個(gè)元素,無(wú)論b是行向量還是列向量?!皢蜗聵?biāo)”(linearindex)標(biāo)識(shí)所謂“單下標(biāo)”標(biāo)識(shí)就是用一個(gè)下標(biāo)來(lái)表明元素在數(shù)組的位置。對(duì)于二維數(shù)組,“單下標(biāo)”編號(hào):設(shè)想把二維數(shù)組的所有列,按先后順序首尾相接排成“一維長(zhǎng)列”,然后自上往下對(duì)元素位置執(zhí)行編號(hào)。兩種“下標(biāo)”標(biāo)識(shí)的變換:sub2ind、ind2sub452.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例2.14】單下標(biāo)的使用>>a=zeros(2,5);>>a(:)=-4:5a=-4-2024-3-1135注意數(shù)組的排列順序。462.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))元素與子數(shù)組的尋訪與賦值【例2.15】一維數(shù)組元素與子數(shù)組的尋訪與賦值>>a=linspace(1,10,5)a=1.00003.25005.50007.750010.0000>>a(3)

ans=5.5000>>a([125])

ans=1.00003.250010.0000%尋訪a的第3個(gè)元素%尋訪a的第1、2、5個(gè)元素組成的子數(shù)組472.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a(1:3)%尋訪前3個(gè)元素組成的子數(shù)組ans=1.00003.25005.5000>>a(3:-1:1)%由前3個(gè)元素倒序構(gòu)成的子數(shù)組ans=5.50003.25001.0000>>a(3:end)ans=5.50007.750010.0000>>a(6)???Indexexceedsmatrixdimensions.下標(biāo)值超出了數(shù)組的維數(shù),導(dǎo)致錯(cuò)誤>>a(2.1)???Subscriptindicesmusteitherberealpositiveintegersorlogicals.下標(biāo)值只能取正整數(shù)或邏輯值%第3個(gè)及其后所有元素構(gòu)成的子數(shù)組函數(shù)end作為參數(shù)使用,返回最后一個(gè)元素的下標(biāo)482.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a(3)=0%修改數(shù)組a的第3元素值為0a=1.00003.250007.750010.0000>>a([25])=[11]a=1.00001.000007.75001.0000可以修改指定數(shù)組元素的值一次可以修改多個(gè)數(shù)組元素的值要修改的數(shù)組元素的個(gè)數(shù)應(yīng)與送入數(shù)組的元素個(gè)數(shù)相同492.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例2.16】二維數(shù)組元素與子數(shù)組的尋訪與賦值>>a_2=zeros(2,4)%創(chuàng)建2x4的全0數(shù)組a_2=00000000>>a_2(:)=1:8a_2=13572468>>a_2([258])%單下標(biāo)方式尋訪多個(gè)元素ans=258注意元素的排列順序502.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a_2([258])=[102030]a_2gt;>a_2(:,[23])=ones(2)%雙下標(biāo)方式尋訪并修改a_2=1117101130二維數(shù)組可以“單下標(biāo)”方式或“全下標(biāo)”方式訪問、賦值;“單下標(biāo)”方式賦值時(shí),等號(hào)兩邊涉及的元素個(gè)數(shù)必須相等;“全下標(biāo)”方式賦值時(shí),等號(hào)右邊數(shù)組的大小必須等于原數(shù)組中涉及元素構(gòu)成的子數(shù)組的大小。512.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a_2(:,end)ans=730>>a_2(:,end-1)ans=11>>a_2(:,end:-1:3)ans=71301>>a_2(end,:)ans=101130>>a_2(end,[2:4])ans=1130>>a_2([46])=6:7a_2=1117106730>>a_2(end,[2:end-1])

Whatistheresult?522.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例2.17】

size、length函數(shù)>>a=ones(4,6)*6>>m=size(a)>>len=length(a)>>b=1:5;>>length(b)>>c=b’>>length(c)

size函數(shù)返回變量的大小,即變量數(shù)組的行列數(shù)length函數(shù)返回變量數(shù)組的最大維數(shù)532.2.5數(shù)組的算術(shù)運(yùn)算MATLAB數(shù)組支持線性代數(shù)中所有的矩陣運(yùn)算。建立特有的數(shù)組運(yùn)算符,如:“.*”、“./”等。

MATLAB數(shù)組運(yùn)算符列表運(yùn)算 運(yùn)算符 含義說明加 +相應(yīng)元素相加減 - 相應(yīng)元素相減乘 * 矩陣乘法點(diǎn)乘 .* 相應(yīng)元素相乘冪 ^ 矩陣冪運(yùn)算點(diǎn)冪 .^ 相應(yīng)元素進(jìn)行冪運(yùn)算左除或右除 \或/ 矩陣左除或右除左點(diǎn)除或右點(diǎn)除.\或./ A的元素被B的對(duì)應(yīng)元素除542.2.5算術(shù)運(yùn)算(續(xù))【例2.18】數(shù)組加減法>>a=zeros(2,3);>>a(:)=1:6;>>b=a+2.5b=3.50005.50007.50004.50006.50008.5000>>c=b-ac=2.50002.50002.50002.50002.50002.5000552.2.5算術(shù)運(yùn)算(續(xù))【例2.19】畫出y=1/(x+1)的函數(shù)曲線,x∈[0,100]。x=0:100;y=1./(x+1);plot(x,y);legend(‘y=1/(x+1)’);

562.2.5算術(shù)運(yùn)算(續(xù))【例2.20】生成一個(gè)信號(hào):x=sin(2*pi*t)+sin(4*pi*t)t=[0:199]./100;%采樣時(shí)間點(diǎn)%生成信號(hào)x=sin(2*pi*t)+sin(4*pi*t);plot(t,x);legend(‘x=sin(2*pi*t)+sin(4*pi*t)’);572.2.5算術(shù)運(yùn)算(續(xù))582.2.5算術(shù)運(yùn)算(續(xù))【例2.21】點(diǎn)冪“.^”舉例>>a=1:6a=123456>>b=reshape(a,2,3)b=135246>>a=a.^2a=149162536>>b=b.^2b=192541636592.2.6關(guān)系運(yùn)算

Matlab提供了6種關(guān)系運(yùn)算符:<、>、<=、>=、==、~=(不等于)關(guān)系運(yùn)算符的運(yùn)算法則:1、當(dāng)兩個(gè)標(biāo)量進(jìn)行比較時(shí),直接比較兩數(shù)大小。若關(guān)系成立,結(jié)果為1,否則為0。2、當(dāng)兩個(gè)維數(shù)相等的矩陣進(jìn)行比較時(shí),其相應(yīng)位置的元素按標(biāo)量關(guān)系進(jìn)行比較,并給出結(jié)果,形成一個(gè)維數(shù)與原來(lái)相同的0、1矩陣。3、當(dāng)一個(gè)標(biāo)量與一個(gè)矩陣比較時(shí),該標(biāo)量與矩陣的各元素進(jìn)行比較,結(jié)果形成一個(gè)與矩陣維數(shù)相等的0、1矩陣。602.2.6關(guān)系運(yùn)算(續(xù))【例2.22】建立5階方陣A,判斷其元素能否被3整除。A=[24,35,13,22,63;23,39,47,80,80;...90,41,80,29,10;45,57,85,62,21;37,19,31,88,76]A=2435132263233947808090418029105785622119318876P=rem(A,3)==0%被3除,求余P=1000101000100001100100000612.2.7邏輯運(yùn)算

Matlab提供了3種邏輯運(yùn)算符:&(與)、|(或)、~(非)邏輯運(yùn)算符的運(yùn)算法則:1、在邏輯運(yùn)算中,確認(rèn)非零元素為真(1),零元素為假(0)。2、當(dāng)兩個(gè)維數(shù)相等的矩陣進(jìn)行比較時(shí),其相應(yīng)位置的元素按標(biāo)量關(guān)系進(jìn)行比較,并給出結(jié)果,形成一個(gè)維數(shù)與原來(lái)相同的0、1矩陣;3、當(dāng)一個(gè)標(biāo)量與一個(gè)矩陣比較時(shí),該標(biāo)量與矩陣的各元素進(jìn)行比較,結(jié)果形成一個(gè)與矩陣維數(shù)相等的0、1矩陣;4、算術(shù)運(yùn)算優(yōu)先級(jí)最高,邏輯運(yùn)算優(yōu)先級(jí)最低。62【例2.23】在[0,3π]區(qū)間,求y=sinx的值。要求消去負(fù)半波,即(π,2π)區(qū)間內(nèi)的函數(shù)值置零。x=0:pi/100:3*pi;y=sin(x);y1=(y>=0).*y;%消去負(fù)半波63【例2.24】建立矩陣A,找出在[10,20]區(qū)間的元素的位置。A=[4,15,-45,10,6;56,0,17,-45,0];find(A>=10&A<=20)%找到非零元素的位置A=415-4510656017-450ans=367642.2.8數(shù)據(jù)分析與統(tǒng)計(jì)最大值和最小值

MATLAB提供的求數(shù)據(jù)序列的最大值和最小值的函數(shù)分別為max和min,兩個(gè)函數(shù)的調(diào)用格式和操作過程類似。

1、求向量的最大值和最小值求一個(gè)向量X的最大值的函數(shù)有兩種調(diào)用格式,分別是:

(1)y=max(X):返回向量X的最大值存入y,如果X中包含復(fù)數(shù)元素,則按模取最大值;

(2)[y,I]=max(X):返回向量X的最大值存入y,最大值的序號(hào)存入I,如果X中包含復(fù)數(shù)元素,則按模取最大值。求向量X的最小值的函數(shù)是min(X),用法和max(X)完全相同。

65【例2.25】求向量的最大值>>x=[-43,72,9,16,23,47];>>y=max(x)%求向量x中的最大值y=72>>[y,l]=max(x)%求向量x中的最大值及其該元素的位置y=72l=2662.2.8數(shù)據(jù)分析與統(tǒng)計(jì)(續(xù))2.求矩陣的最大值和最小值求矩陣A的最大值的函數(shù)有3種調(diào)用格式,分別是:(1)max(A):返回一個(gè)行向量,向量的第i個(gè)元素是矩陣A的第i列上的最大值;(2)[Y,U]=max(A):返回行向量Y和U,Y向量記錄A的每列的最大值,U向量記錄每列最大值的行號(hào);(3)max(A,[],dim):dim取1或2。dim取1時(shí),該函數(shù)和max(A)完全相同;dim取2時(shí),該函數(shù)返回一個(gè)列向量,其第i個(gè)元素是A矩陣的第i行上的最大值。求最小值的函數(shù)是min,其用法和max完全相同。67【例7-2】求矩陣的最大值>>x=[-43,72,9;16,23,47];>>y=max(x)%求矩陣x中每列的最大值y=167247>>[y,l]=max(x)%求矩陣x中每列的最大值及其該元素的位置y=

167247l=212>>max(x,[],1),max(x,[],2)%求矩陣中每行的最大值682.2.8數(shù)據(jù)分析與統(tǒng)計(jì)(續(xù))求和與求積sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘積。sum(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的元素和。prod(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的元素乘積。sum(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于sum(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的各元素之和。prod(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于prod(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的各元素乘積。692.2.8數(shù)據(jù)分析與統(tǒng)計(jì)平均值與中值

求數(shù)據(jù)序列平均值的函數(shù)是mean,求數(shù)據(jù)序列中值的函數(shù)是median。兩個(gè)函數(shù)的調(diào)用格式為:mean(X):返回向量X的算術(shù)平均值。median(X):返回向量X的中值。mean(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的算術(shù)平均值。median(A):返回一個(gè)行向量,其第i個(gè)元素是A的第i列的中值。mean(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于mean(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的算術(shù)平均值。median(A,dim):當(dāng)dim為1時(shí),該函數(shù)等同于median(A);當(dāng)dim為2時(shí),返回一個(gè)列向量,其第i個(gè)元素是A的第i行的中值。70第三講數(shù)據(jù)和函數(shù)的可視化(作圖)713.1二維曲線繪圖plot指令的基本調(diào)用格式(1)plot(x)x為向量時(shí),以該元素的下標(biāo)為橫坐標(biāo)、元素值為縱坐標(biāo)繪出曲線x為實(shí)數(shù)二維數(shù)組時(shí),則按列繪制每列元素值相對(duì)其下標(biāo)的曲線,曲線數(shù)等于x數(shù)組的列數(shù)。x為復(fù)數(shù)二維數(shù)組時(shí),則按列分別以數(shù)組的實(shí)部和虛部為橫、縱坐標(biāo)繪制多條曲線(2)plot(x,y)x、y為同維數(shù)組時(shí),繪制以x、y元素為橫縱坐標(biāo)的曲線x為向量,y為二維數(shù)組、且其列數(shù)或行數(shù)等于x的元素?cái)?shù)時(shí),繪制多條不同顏色的曲線x為二維數(shù)組,y為向量時(shí),情況與上相同,只是y仍為縱坐標(biāo)。(3)plot(x1,y1,x2,y2,…)繪制以x1為橫坐標(biāo)、y1為縱坐標(biāo)的曲線1,以x2為橫坐標(biāo)、y2為縱坐標(biāo)的曲線2,等等。其中x為橫坐標(biāo),y為縱坐標(biāo),繪制y=f(x)函數(shù)曲線。

72例3.1使用直角坐標(biāo)系在[0,2π]區(qū)間內(nèi),繪制曲線x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y)73例3.2使用參數(shù)方程繪制曲線繪制曲線t=-pi:pi/100:pi;x=t.*cos(3*t);y=t.*sin(t).^2;plot(x,y)74例3.3繪制復(fù)雜曲線用圖形表示連續(xù)調(diào)制波形及其包絡(luò)線。t=(0:pi/100:pi)’;

%長(zhǎng)度為101的時(shí)間采樣列向量y1=sin(t)*[1,-1];

%包絡(luò)線函數(shù)值,是(101x2)的矩陣y2=sin(t).*sin(9*t);

%長(zhǎng)度為101的調(diào)制波列向量t3=pi*(0:9)/9;

y3=sin(t3).*sin(9*t3);plot(t,y1,'r:',t,y2,'b',t3,y3,'bo')

axis([0,pi,-1,1])

%控制軸的范圍

753.2多次疊繪、雙縱坐標(biāo)和多子圖多次疊繪多次調(diào)用plot命令在一幅圖上繪制多條曲線,需要hold指令的配合。

holdon保持當(dāng)前坐標(biāo)軸和圖形,并可以接受下一次繪制。holdoff

取消當(dāng)前坐標(biāo)軸和圖形保持,這種狀態(tài)下,調(diào)用plot繪制完全新的圖形,不保留以前的坐標(biāo)格式、曲線。76例3.4重繪曲線重繪波形y=sin(t)sin(9t)及其包絡(luò)線。t=(0:pi/100:pi)';

%長(zhǎng)度為101的時(shí)間采樣列向量

y1=sin(t)*[1,-1];

%包絡(luò)線函數(shù)值,是(101x2)的矩陣y2=sin(t).*sin(9*t);

%長(zhǎng)度為101的調(diào)制波列向量t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3);plot(t,y1,'r:’)holdonplot(t,y2,'b‘)plot(t3,y3,'bo')

axis([0,pi,-1,1])

%控制軸的范圍

holdoff77例3.5利用hold繪制離散信號(hào)的波形。t=2*pi*(0:20)/20;y=cos(t).*exp(-0.4*t);stem(t,y,'g');holdon;stairs(t,y,'r');holdoff783.3雙縱坐標(biāo):plotyy指令plotyy指令調(diào)用格式:

plotyy(x1,y1,x2,y2)

x1-y1曲線y軸在左,x2-y2曲線y軸在右。

例3.7:

x=0:0.01:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);

plotyy(x,y1,x,y2);793.4多子圖MATLAB允許在同一窗口布置幾幅獨(dú)立子圖。具體指令:subplot(m,n,k) 使(mxn)幅子圖中第k個(gè)子圖成為當(dāng)前圖subplot(‘postion’,[left,bottom,width,height])在指定的位置上開辟子圖,并成為當(dāng)前圖說明:subplot(m,n,k)的含義:圖形窗口包含(mxn)個(gè)子圖,k為要指定的當(dāng)前子圖的編號(hào)。其編號(hào)原則:左上方為第1子圖,然后向右向下依次排序。該指令按缺省值分割子圖區(qū)域。subplot(‘postion’,[left,bottom,width,height])用于手工指定子圖位置,指定位置的四元組采用歸一化的標(biāo)稱單位,即認(rèn)為整個(gè)圖形窗口繪圖區(qū)域的高、寬的取值范圍都是[0,1],而左下角為(0,0)坐標(biāo)。產(chǎn)生的子圖彼此獨(dú)立。所有的繪圖指令均可以在子圖中使用。80例3.6演示subplot指令對(duì)圖形窗的分割

t=(pi*(0:1000)/1000)';y1=sin(t);y2=sin(10*t);y12=sin(t).*sin(10*t);subplot(2,2,1),plot(t,y1);axis([0,pi,-1,1])subplot(2,2,2),plot(t,y2);axis([0,pi,-1,1])subplot('position',[0.2,0.05,0.6,0.45])plot(t,y12,'b-',t,[y1,-y1],'r:');813.5繪制圖形的輔助操作曲線線形控制符

曲線顏色控制符

符號(hào)-:-.--含義實(shí)線虛線點(diǎn)劃線雙劃線符號(hào)bgrcmykw含義蘭綠紅青品紅黃黑白82曲線的色彩、線型和數(shù)據(jù)點(diǎn)形曲線的線形控制符、顏色控制符、數(shù)據(jù)點(diǎn)形控制符可以組合使用其先后次序不影響繪圖結(jié)果也可以單獨(dú)使用。83例3.7繪制圖形的輔助操作SpecifyLineproperties

t=(0:15)*2*pi/15;y=sin(t);subplot(3,2,1),plot(t,y);

title('Linsstyleisdefault')subplot(3,2,2),

plot(t,y,'o');

title('Linsstyleiso')subplot(3,2,3),plot(t,y,'k:');

title('Linsstyleisk:')subplot(3,2,4),plot(t,y,'k:*');

title('Linsstyleisk:*')subplot(3,2,5),plot(t,y,'m-d');

title('Linsstyleism-d')subplot(3,2,6),

plot(t,y,'r-p');

title('Linsstyleisr-p')84853.6坐標(biāo)、刻度和分格線控制86例3.8坐標(biāo)控制繪制橢圓,長(zhǎng)軸為3.25,短軸為1.15t=0:2*pi/99:2*pi;x=1.15*cos(t);y=3.25*sin(t);

%y為長(zhǎng)軸,x為短軸subplot(2,2,1);plot(x,y);axisofftitle('axisoff');subplot(2,2,2);plot(x,y);axisimage;title('axisimage');subplot(2,2,3);plot(x,y);axisequal;title('axisEqual');subplot(2,2,4);plot(x,y);axissquare;title('axisSquare');87883.7刻度、分格線和坐標(biāo)框分格線與grid指令

gridon 畫出分格線gridoff 不畫分格線MATLAB的缺省設(shè)置是不畫分格線;分格線的疏密取決于坐標(biāo)刻度(改變坐標(biāo)刻度,可改變分格線的疏密)。坐標(biāo)框boxon 控制加邊框線boxoff 控制不加邊框線刻度設(shè)置指令及格式:set(gca,‘xtick’,xs,‘ytick’,ys)xs、ys可以使任何合法的實(shí)數(shù)向量,用于分別設(shè)置x、y軸的刻度。89例3.9繪制y=1-exp(-0.3*t).*cos(0.7*t)t=6*pi*(0:100)/100;y=1-exp(-0.3*t).*cos(0.7*t);tt=t(find(abs(y-1)>0.05));ts=max(tt);plot(t,y,'r-');gridon;axis([0,6*pi,0.6,max(y)]);title('y=1-exp(-\alpha*t)*cos(\omega*t)');

holdon;plot(ts,0.95,'bo');holdoff;set(gca,'xtick',[2*pi,4*pi,6*pi],'ytick',[0.95,1,1.05,max(y)]);gridon;90913.8圖形標(biāo)識(shí)圖形標(biāo)識(shí)包括:圖名(title)坐標(biāo)軸名(xlabel、ylabel)圖形文本注釋(text)圖例(legend)簡(jiǎn)捷使用格式title(s) %s為字符串變量或常量xlabel(s)ylabel(s)legend(s)text(x,y,s) %指定坐標(biāo)(x,y)處加注文字

923.8圖形標(biāo)識(shí)(續(xù))精細(xì)指令形式字體樣式設(shè)置:

\fontname{arg}\arg\fontsize{arg}string其中,String為要輸出的字符串,其前面的均為屬性控制,使用方法見下表。933.8圖形標(biāo)識(shí)(續(xù))94例3.10在正弦曲線上標(biāo)注特殊值t=(0:100)/100*2*pi;y=sin(t);plot(t,y)text(3*pi/4,sin(3*pi/4),'\fontsize{16}\leftarrowsin(t)=.707')text(pi,sin(pi),'\fontsize{16}\leftarrowsin(t)=0')text(5*pi/4,sin(5*pi/4),'\fontsize{16}sin(t)=-.707\rightarrow',...'HorizontalAlignment','right')其中,‘HorizontalAlignment’,‘right’設(shè)置圖形標(biāo)識(shí)為水平右對(duì)齊95例3.11

t=0:900;plot(t,0.25*exp(-0.005*t))title('\fontsize{16}\itAe^{\alphat}');text(300,.25*exp(-0.005*300),...'\fontsize{14}\leftarrow0.25\ite^-0.005\ittat\itt=300');963.9特殊圖形直方圖(柱形圖)bar垂直直方圖累計(jì)式分組式水平直方圖累計(jì)式分組式97例3.12x=-2.9:0.2:2.9;bar(x,exp(-x.*x),'r')98例3.13北京市從業(yè)人員統(tǒng)計(jì) 1990年 1995年 2000年第一產(chǎn)業(yè)

90.7 70.6 73.9(萬(wàn)人)第二產(chǎn)業(yè) 281.6 271 214.6第三產(chǎn)業(yè) 254.8 323.7 326.5執(zhí)行以下語(yǔ)句:year=[199019952000];people=[90.7281.6254.8;70.6271323.7;73.9214.6326.5];bar(year,people,‘stack’);legend(‘\fontsize{6}第一產(chǎn)業(yè)’,‘\fontsize{6}第二產(chǎn)業(yè)’,‘\fontsize{6}第三產(chǎn)業(yè)');99累計(jì)式直方圖100bar(year,people,‘group’);

%分組式直方圖legend(‘\fontsize{6}第一產(chǎn)業(yè)’,‘\fontsize{6}第二產(chǎn)業(yè)’,‘\fontsize{6}第三產(chǎn)業(yè)');101barh(year,people,‘group’);

%分組式直方圖legend(‘\fontsize{6}first’,‘\fontsize{6}second’,‘\fontsize{6}third');102barh(year,people,‘stack’);%累積式直方圖legend(‘\fontsize{6}first’,‘\fontsize{6}second’,‘\fontsize{6}third');103餅圖指令pie餅圖指令pie用來(lái)表示各元素占總和的百分?jǐn)?shù)。該指令第二輸入變量是與第一變量同長(zhǎng)的0-1向量,1使對(duì)應(yīng)扇塊突出。a=[1,1.6,1.2,0.8,2.1];subplot(1,2,1),pie(a,[10100]),legend({'1','2','3','4','5'})subplot(1,2,2),b=int8(a==min(a))pie3(a,b)colormap(cool)

104105離散桿圖stem余弦波的采樣信號(hào)圖t=linspace(-2*pi,2*pi,20);h=stem(t,cos(t));106例3.14條形圖、填充圖、階梯圖和桿圖形式繪圖x=0:0.35:7;y=2*exp(-0.5*x);subplot(221);bar(x,y,'g');title('bar(x,y,''g'')');axis([0,7,0,2]);subplot(222);fill(x,y,'r');title('fill(x,y,''r'')');axis([0,7,0,2]);subplot(223);stairs(x,y,'b');title('stairs(x,y,''b'')');axis([0,7,0,2]);subplot(224);stem(x,y,'k');title('stem(x,y,''k'')');axis([0,7,0,2]);107例3.15極坐標(biāo)圖polar函數(shù)用來(lái)繪制極坐標(biāo)圖,其調(diào)用格式為:polar(theta,rho,選項(xiàng))例:繪制ρ=sin(2θ)cos(2θ)的圖形theta=0:0.01:2*pi;rho=sin(2*theta).*cos(2*theta);polar(theta,rho,'k');1083.10三維繪圖三維線圖指令plot3三維繪圖指令中,plot3最易于理解,它的使用格式與plot十分相似,只是對(duì)應(yīng)第3維空間的參量。t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,'b-',x,y,z,'bd');view([-82,58]);boxonlegend('鏈','寶石')109三維線圖繪制結(jié)果110三維網(wǎng)線圖(mesh)和曲面圖(surf)畫函數(shù)z=f(x,y)所代表的三維空間曲面,需要做以下的數(shù)據(jù)準(zhǔn)備工作:確定自變量的取值范圍和取值間隔。x=x1:dx:x2;y=y1:dy:y2;構(gòu)成x-y平面上的自變量采樣“格點(diǎn)”矩陣。利用MATLAB指令meshgrid產(chǎn)生“格點(diǎn)”矩陣[xa,ya]=meshgrid(x,y)

;計(jì)算函數(shù)在自變量采樣“格點(diǎn)”上的函數(shù)值,即z=f(x,y)。網(wǎng)線圖、曲面圖繪制。111舉例繪制函數(shù)z=x^2+y^2的曲面x=-4:4;y=x;[x,y]=meshgrid(x,y);

%生成x-y坐標(biāo)“格點(diǎn)”矩陣z=x.^2+y.^2;%計(jì)算格點(diǎn)上的函數(shù)值subplot(1,2,1),mesh(x,y,z);

%三維網(wǎng)格圖subplot(1,2,2),surf(x,y,z);

%三維曲面圖colormap(hot);112函數(shù)z=x^2+y^2的曲面的繪制結(jié)果1133.11圖像文件的讀寫與圖像顯示imread指令讀取圖像文件(BMP,GIF,PNG,JPEG,andTIFF)imshow指令顯示圖像imwrite指令保存圖像例:讀取圖像文件img1=imread(‘mudan.jpg');%Loadimagedataimg2=imread('eight.tif');whosimg1img2114第四講Matlab程序設(shè)計(jì)1154.1Matlab命令的執(zhí)行方式交互式命令執(zhí)行方式(命令窗口)逐條輸入,逐條執(zhí)行,操作簡(jiǎn)單、直觀,但速度慢,執(zhí)行過程不能保留。M文件的程序執(zhí)行方式

將命令編成程序存儲(chǔ)在一個(gè)文件中(M文件),依次運(yùn)行文件中的命令,可以重復(fù)進(jìn)行。Matlab程序設(shè)計(jì)有傳統(tǒng)高級(jí)語(yǔ)言的特征,又有自己獨(dú)特的特點(diǎn),可以利用數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),使程序結(jié)構(gòu)簡(jiǎn)單,編程效率高。1164.2M文件用Matlab語(yǔ)言編寫的程序,稱為M文件。

由若干Matlab命令組合在一起構(gòu)成的,它可以完成某些操作,也可以實(shí)現(xiàn)某種算法。M文件根據(jù)調(diào)用方式的不同分為兩類:

命令文件(ScriptFile)

函數(shù)文件(FunctionFile)它們的擴(kuò)展名都是.m117命令文件和函數(shù)文件的區(qū)別命令文件沒有輸入?yún)?shù),也不返回輸出參數(shù);函數(shù)文件可以帶輸入?yún)?shù),也可以返回輸出參數(shù)。命令文件對(duì)工作空間中的變量進(jìn)行操作,文件中所有命令的執(zhí)行結(jié)果也返回工作空間中;函數(shù)文件中定義的變量為局部變量,當(dāng)函數(shù)文件執(zhí)行完畢時(shí),這些變量也被清除。命令文件可以直接運(yùn)行;函數(shù)文件不能直接運(yùn)行,要以函數(shù)調(diào)用的方式來(lái)調(diào)用它。118例4.1建立文件將變量a、b的值互換命令文件:clear;a=1:10;b=[11,12,13,14;15,16,17,18];c=a;a=b;b=c;ab將文件保存為exch,并在命令窗口執(zhí)行。執(zhí)行結(jié)果:a=1112131415161718b=12345678910119函數(shù)文件fexch.mfunction[a,b]=exch(a,b)c=a;a=b;b=c;然后在命令窗口調(diào)用該函數(shù)文件:clear;x=1:10;y=[11,12,13,14;15,16,17,18];[x,y]=fexch(x,y)輸出結(jié)果為:a=1112131415161718b=12345678910函數(shù)參數(shù)a,b,c未保留在工作空間中,x,y保留在工作空間中。120M文件的建立與打開M文件是一個(gè)文本文件,可以用任何編輯程序來(lái)建立和編輯,一般最常用的是使用Matlab提供的文本編輯器。

該編輯器是一個(gè)集編輯和調(diào)試于一體的工作環(huán)境。1214.3程序控制結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)

任何復(fù)雜的程序都可以由這3種基本結(jié)構(gòu)構(gòu)成。122順序結(jié)構(gòu)順序結(jié)構(gòu)是指按照程序中語(yǔ)句的排列順序依次執(zhí)行,直到程序的最后一個(gè)語(yǔ)句。(最簡(jiǎn)單的一種程序)1、數(shù)據(jù)的輸入從鍵盤輸入數(shù)據(jù),則可以使用input函數(shù)來(lái)進(jìn)行,調(diào)用格式為:

A=input(提示信息,選項(xiàng));其中提示信息為一個(gè)字符串,用于提示用戶輸入數(shù)據(jù)。

例如:從鍵盤輸入A矩陣,可以采用下面的命令來(lái)完成

A=input(‘輸入A矩陣’);如果在input函數(shù)調(diào)用時(shí)采用’s’選項(xiàng),則允許用戶輸入一個(gè)字符串。例:xm=input(‘What’syourname?’,’s’);123順序結(jié)構(gòu)(續(xù))2、數(shù)據(jù)的輸出命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為:

disp(輸出項(xiàng))其中輸出項(xiàng)既可以為字符串,也可以為矩陣。例如:

A=‘Hello,Tom’;disp(A)輸出為:Hello,Tom

又如:A=[1,2,3;4,5,6;7,8,9];disp(A)輸出為:123456789%disp函數(shù)輸出格式更緊湊124例5.2求一元二次方程ax2+bx+c=0的根。由于Matlab能進(jìn)行復(fù)數(shù)運(yùn)算,所以不需要判斷方程的判別式,可直接根據(jù)求根公式求根。程序如下:a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);程序輸出為:a=?4b=?78c=?54x1=-0.7188,x2=-18.7812順序結(jié)構(gòu)(續(xù))1253、程序的暫停程序執(zhí)行過程中暫停,可用pause函數(shù),其調(diào)用格式為:

pause(延遲描述)

如果省略延遲時(shí)間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。

若要強(qiáng)行中止程序的運(yùn)行可按Ctrl+C鍵。順序結(jié)構(gòu)(續(xù))126選擇結(jié)構(gòu)根據(jù)給定條件成立或不成立,分別執(zhí)行不同的語(yǔ)句。Matlab用于實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句有if,switch和try語(yǔ)句。1.if語(yǔ)句在Matlab中,if語(yǔ)句有3種格式。(1)單分支if語(yǔ)句語(yǔ)句格式:if條件語(yǔ)句組end例如:當(dāng)x是整數(shù)矩陣時(shí),輸出x的值iffix(x)==xdisp(x);end127例4.3計(jì)算分段函數(shù):程序如下:x=input(‘請(qǐng)輸入x的值:');ifx==10y=cos(x+1)+sqrt(x*x+1);elsey=x*sqrt(x+sqrt(x));endy也可以用單分支if語(yǔ)句來(lái)實(shí)現(xiàn):x=input('請(qǐng)輸入x的值:');y=cos(x+1)+sqrt(x*x+1);ifx~=10y=x*sqrt(x+sqrt(x));endy選擇結(jié)構(gòu)(續(xù))128(2)雙分支if語(yǔ)句語(yǔ)句格式:if條件語(yǔ)句組1else語(yǔ)句組2end當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2,然后再執(zhí)行if語(yǔ)句的后續(xù)語(yǔ)句。選擇結(jié)構(gòu)(續(xù))129(3)多分支if語(yǔ)句語(yǔ)句格式:if條件1語(yǔ)句組1elseif條件2語(yǔ)句組2…elseif條件m語(yǔ)句組melse語(yǔ)句組nend選擇結(jié)構(gòu)(續(xù))1302、switch語(yǔ)句根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語(yǔ)句,其語(yǔ)句格式:switch表達(dá)式case表達(dá)式1語(yǔ)句組1case表達(dá)式2語(yǔ)句組2…case表達(dá)式m語(yǔ)句組motherwise語(yǔ)句組nendswitch子句后面的表達(dá)式應(yīng)為一個(gè)標(biāo)量或一個(gè)字符串;case子句后面的表達(dá)式不僅可以為一個(gè)標(biāo)量或一個(gè)字符串,還可以為一個(gè)元胞矩陣。選擇結(jié)構(gòu)(續(xù))131例5.5某商場(chǎng)對(duì)顧客所購(gòu)買的商品實(shí)行打折銷售,標(biāo)準(zhǔn)如下:price<200沒有折扣200<=price<5003%折扣500<=price<10005%折扣1000<=price<25008%折扣2500<=price<500010%折扣5000<=price14%折扣輸入所售商品的價(jià)格,求其實(shí)際銷售價(jià)格。132程序如下price=input(‘請(qǐng)輸入商品價(jià)格’);switchfix(price/100)case{0,1}%價(jià)格小于200rate=0;case{2,3,4}rate=3/100;%價(jià)格大于等于200但小于500casenum2cell(5:9)rate=5/100;%價(jià)格大于等于500但小于1000casenum2cell(10:24)rate=8/100;%價(jià)格大于等于1000但小于2500casenum2cell(25:49)rate=10/100;%價(jià)格大于等于2500但小于5000otherwiserate=14/100;%價(jià)格大于等于5000endprice=price*(1-rate)%輸出商品實(shí)際銷售價(jià)格num2cell函數(shù)是將數(shù)值矩陣轉(zhuǎn)化為單元矩陣。1333.try語(yǔ)句try語(yǔ)句是一種試探性執(zhí)行語(yǔ)句,其語(yǔ)句格式為:

try語(yǔ)句組1catch語(yǔ)句組2endtry語(yǔ)句先試探性執(zhí)行語(yǔ)句組1,如果在執(zhí)行過程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語(yǔ)句組2.選擇結(jié)構(gòu)(續(xù))134例5.6矩陣乘法運(yùn)算要求兩矩陣的維數(shù)相容,否則會(huì)出錯(cuò)。先求兩矩陣的乘積,若出錯(cuò)則自動(dòng)轉(zhuǎn)去求兩矩陣的點(diǎn)乘。程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%顯示出錯(cuò)原因C=71627405572ans=Erro

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論