matlab在科學(xué)計(jì)算中應(yīng)用_第1頁(yè)
matlab在科學(xué)計(jì)算中應(yīng)用_第2頁(yè)
matlab在科學(xué)計(jì)算中應(yīng)用_第3頁(yè)
matlab在科學(xué)計(jì)算中應(yīng)用_第4頁(yè)
matlab在科學(xué)計(jì)算中應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩95頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二章MATLAB語(yǔ)言程序設(shè)計(jì)基礎(chǔ)MATLAB語(yǔ)言的簡(jiǎn)潔高效性MATLAB語(yǔ)言的科學(xué)運(yùn)算功能MATLAB語(yǔ)言的繪圖功能MATLAB龐大的工具箱與模塊集MATLAB強(qiáng)大的動(dòng)態(tài)系統(tǒng)仿真功能MATLAB

語(yǔ)言是當(dāng)前國(guó)際上自動(dòng)控制領(lǐng)域的首選計(jì)算機(jī)語(yǔ)言,也是很多理工科專(zhuān)業(yè)最適合的計(jì)算機(jī)數(shù)學(xué)語(yǔ)言。通過(guò)學(xué)習(xí)可更深入理解和掌握數(shù)學(xué)問(wèn)題的求解思想,提高求解數(shù)學(xué)問(wèn)題的能力,為今后其他專(zhuān)業(yè)課程的學(xué)習(xí)提供幫助。

MATLAB語(yǔ)言的優(yōu)勢(shì):本章主要內(nèi)容MATLAB基本命令簡(jiǎn)介MATLAB程序設(shè)計(jì)語(yǔ)言基礎(chǔ)基本數(shù)學(xué)運(yùn)算MATLAB語(yǔ)言流程控制MATLAB函數(shù)的編寫(xiě)二維圖形繪制三維圖形繪制2.1MATLAB基本命令簡(jiǎn)介MATLAB通用命令Matlab常用的窗口幫助命令help命令直接輸入help,MATLAB將列出所有的幫助主題,每個(gè)幫助主題對(duì)應(yīng)于MATLAB搜索路徑中的一個(gè)目錄;help后加幫助主題,可獲得指定幫助主題的幫助信息;help后加函數(shù)名;help后加命令名,將得到指定命令的用法;demo命令

helpwin命令用于打開(kāi)MATLAB的幫助文件窗l(fā)ookfor命令允許用戶通過(guò)完整的或部分關(guān)鍵字來(lái)搜索要查找的內(nèi)容who和whos的作用是列出在MATLAB工作內(nèi)存中駐留的變量名exist命令用來(lái)查找或檢查變量和函數(shù)的存在性2.2MATLAB程序設(shè)計(jì)語(yǔ)言基礎(chǔ)MATLAB語(yǔ)言的變量命名規(guī)則是:(1)變量名必須是不含空格的單個(gè)詞;(2)變量名區(qū)分大小寫(xiě);(3)變量名最多不超過(guò)19個(gè)字符;(4)變量名必須以字母打頭,之后可以是任意字母、數(shù)字或下劃線,變量名中不允許使用標(biāo)點(diǎn)符號(hào)MATLAB的保留常量數(shù)學(xué)運(yùn)算符號(hào)及標(biāo)點(diǎn)符號(hào)(1)MATLAB的每條命令后,若為逗號(hào)或無(wú)標(biāo)點(diǎn)符號(hào),則顯示命令的結(jié)果;若命令后為分號(hào),則禁止顯示結(jié)果.(2)“%”后面所有文字為注釋.(3)“...”表示續(xù)行.數(shù)學(xué)運(yùn)算符號(hào)及標(biāo)點(diǎn)符號(hào)雙精度數(shù)值變量IEEE標(biāo)準(zhǔn),64位(占8字節(jié)),11指數(shù)位,53數(shù)值位和一個(gè)符號(hào)位

double()函數(shù)的轉(zhuǎn)換其他數(shù)據(jù)類(lèi)型uint8(),無(wú)符號(hào)8位整形數(shù)據(jù)類(lèi)型,值域?yàn)?至255,常用于圖像表示和處理。(節(jié)省存儲(chǔ)空間,提高處理速度)int8(),int16(),int32(),uint16(),uint32()數(shù)值型數(shù)據(jù)結(jié)構(gòu)符號(hào)型,sym(A),常用于公式推導(dǎo)、解析解解法

符號(hào)變量聲明

symsvar_listvar_props

例:symsabrealsymscpositive符號(hào)型變量數(shù)據(jù)類(lèi)型符號(hào)型數(shù)值可采用變精度函數(shù)求值vpa(A),或vpa(A,n)>>vpa(pi)ans=3.4626433832795>>vpa(pi,60)ans=3.97494字符串型數(shù)據(jù):用單引號(hào)括起來(lái)。多維數(shù)組:是矩陣的直接擴(kuò)展,多個(gè)下標(biāo)。單元數(shù)組:將不同類(lèi)型數(shù)據(jù)集成到一個(gè)變量名下面,用{}表示;例:用A{i,j}可表示單元數(shù)組A的第i行,第j列的內(nèi)容。類(lèi)與對(duì)象:允許用戶自己編寫(xiě)包含各種復(fù)雜詳細(xì)的變量,可以定義傳遞函數(shù)。MATLAB支持的其它數(shù)據(jù)結(jié)構(gòu)直接賦值語(yǔ)句

賦值變量=賦值表達(dá)式例:>>a=pi^2a=9.8696

例:表示矩陣>>B=[1+9i,2+8i,3+7j;4+6j5+5i,6+4i;7+3i,8+2j1i]B=1.0000+9.0000i2.0000+8.0000i3.0000+7.0000i4.0000+6.0000i5.0000+5.0000i6.0000+4.0000i7.0000+3.0000i8.0000+2.0000i0+1.0000iMATLAB的基本語(yǔ)句結(jié)構(gòu)函數(shù)調(diào)用語(yǔ)句[返回變量列表]=函數(shù)名(輸入變量列表)例:[a,b,c]=my_fun(d,e,f,c)冒號(hào)表達(dá)式

v=s1:s2:s3

該函數(shù)生成一個(gè)行向量v,其中s1是起始值,s2是步長(zhǎng)(若省略步長(zhǎng)為1),s3是最大值。

例:用不同的步距生成(0,p)間向量。>>v1=0:0.2:piv1=Columns1through900.20000.40000.60000.80001.00001.20001.40001.6000Columns10through161.80002.00002.20002.40002.60002.80003.0000>>v2=0:-0.1:pi%步距為負(fù),不能生成向量,得出空矩陣v2=Emptymatrix:1-by-0>>v3=0:piv3=0123>>v4=pi:-1:0%逆序排列構(gòu)成新向量v4=3.14162.14161.14160.1416>>v5=[0:0.4:pi,pi]v5=00.40000.80001.20001.60002.00002.40002.80003.1416基本語(yǔ)句格式B=A(v1,v2)v1、v2分別表示提取行(列)號(hào)構(gòu)成的向量。例:>>A=[1,2,3,4;3,4,5,6;5,6,7,8;7,8,9,0]A=1234345656787890>>B1=A(1:2:end,:)%提取全部奇數(shù)行、所有列。B1=12345678子矩陣提取>>B2=A([3,2,1],[2,3,4])%提取3,2,1行、2,3,4列構(gòu)成子矩陣。A=B2=1234

678345645656782347890>>B3=A(:,end:-1:1)%將A矩陣左右翻轉(zhuǎn),即最后一列排在最前面。B3=4321654387650987矩陣表示矩陣轉(zhuǎn)置數(shù)學(xué)表示(若A有復(fù)數(shù)元素,先轉(zhuǎn)置再取各元素共軛復(fù)數(shù)值,Hermit轉(zhuǎn)置)MATLAB求解

D=B.',E=B'2.3基本數(shù)學(xué)運(yùn)算矩陣的代數(shù)運(yùn)算矩陣加減法

C=A+BD=A-B注意維數(shù)是否相等注意其一為標(biāo)量的情形矩陣乘法數(shù)學(xué)表示MATLAB表示

C=A*B注意兩個(gè)矩陣維數(shù)相容性

矩陣除法矩陣左除:AX=B,求XMATLAB求解:X=A\B若A為非奇異方陣,則X=A-1B最小二乘解(若A不是方陣)矩陣右除:XA=B,求XMATLAB求解:X=B/A若A為非奇異方陣,則X=BA-1最小二乘解(若A不是方陣)矩陣翻轉(zhuǎn)左右翻轉(zhuǎn)B=fliplr(A)上下翻轉(zhuǎn)C=flipud(A)旋轉(zhuǎn)90o(逆時(shí)針)

D=rot90(A)

如何旋轉(zhuǎn)180o?

>>D=rot180(A)???Undefinedfunctionorvariable'rot180'.>>D=rot90(rot90(A))矩陣乘方

A

為方陣,求

MATLAB實(shí)現(xiàn):

F=A^x%F=A.^2MATLAB中矩陣與數(shù)組的區(qū)別,點(diǎn)運(yùn)算符的運(yùn)用一維數(shù)組相當(dāng)于向量,二維數(shù)組相當(dāng)于矩陣,所以矩陣是數(shù)組的子集。數(shù)組運(yùn)算是指數(shù)組對(duì)應(yīng)元素之間的運(yùn)算,也稱(chēng)點(diǎn)運(yùn)算。矩陣是一個(gè)二維數(shù)組,所以矩陣的加、減、數(shù)乘等運(yùn)算與數(shù)組運(yùn)算是一致的。

矩陣的乘法、乘方和除法有特殊的數(shù)學(xué)含義,并不是數(shù)組對(duì)應(yīng)元素的運(yùn)算,所以數(shù)組乘法、乘方和除法的運(yùn)算符前特別加了一個(gè)點(diǎn)。數(shù)學(xué)運(yùn)算符號(hào)及標(biāo)點(diǎn)符號(hào)乘法數(shù)組運(yùn)算:數(shù)組乘數(shù)組A.*B

矩陣運(yùn)算:

矩陣乘法A*B

按數(shù)學(xué)定義的矩陣乘法規(guī)則

>>A=[12;34],B=[43;21],A=1234B=4321>>r2_1=A*B,r2_2=A.*Br2-1=852013R2_2=44664除法數(shù)組運(yùn)算:

數(shù)除以數(shù)組k./A和A.\k

k分別被A的元素除.數(shù)組除法左除A.\B右除B./A

矩陣運(yùn)算:矩陣除法左除A\B,右除B/A分別為AX=B和XA=B的解.A=B=12433421>>r3_1=A\B,r3_2=A.\Br3_1=

-6.0000

-5.0000

5.0000

4.0000r3_2=

4.0000

1.5000

0.6667

0.2500A=B=12433421>>r4_1=B/A,r4_2=B./Ar4_1=

-3.5000

2.5000

-2.5000

1.5000r4_2=

4.0000

1.5000

0.6667

0.2500乘方數(shù)組運(yùn)算:

數(shù)組乘方A.^k:

A的每個(gè)元素進(jìn)行k次方運(yùn)算;k.^A以k為底的,分別以A的元素為指數(shù)求冪值.

矩陣運(yùn)算:矩陣乘方A^k

k個(gè)矩陣A相乘

>>A=[12;34],1234>>r5_1=A.^2,r5_2=A^2r5-1=

1

4

9

16r5-2=

7

1015

22>>r6_1=2.^Ar6-1=

2

4

8

16邏輯變量:當(dāng)前版本有邏輯變量對(duì)double變量來(lái)說(shuō),非0表示邏輯1邏輯運(yùn)算(相應(yīng)元素間的運(yùn)算)與運(yùn)算(and)A&C或運(yùn)算(or)A|C非運(yùn)算(not)~A異或運(yùn)算xor(A,C)矩陣的邏輯運(yùn)算各種允許的比較關(guān)系

>,>=,<,<=,==,~=,find(),all(),any()例:>>A=[1,2,3;4,5,6;7,8,0]A=123456780>>find(A>=5)%大于或等于5元素的下標(biāo)ans=3568矩陣的比較運(yùn)算>>[i,j]=find(A>=5);[i,j]%顯示行標(biāo),列標(biāo)ans=A=31123224563278023>>all(A>=5)%某列元素全大于或等于5時(shí),相應(yīng)元素為1,否則為0。ans=000>>any(A>=5)%某列元素中含有大于或等于5時(shí),相應(yīng)元素為1,否則為0。ans=111解析結(jié)果的化簡(jiǎn)與變換MATLAB實(shí)現(xiàn):

s1=simplify(s)%s1=simple(s)從各種方法中自動(dòng)選擇最簡(jiǎn)格式,其中,s為原始表達(dá)式,s1為化簡(jiǎn)后表達(dá)式。其它常用化簡(jiǎn)函數(shù)(信息與格式可用help命令得出)

collect()

合并同類(lèi)項(xiàng)

expand()

展開(kāi)多項(xiàng)式

factor()

因式分解

numden()

提取多項(xiàng)式的分子和分母

sincos()

三角函數(shù)的化簡(jiǎn)例:>>symss;>>P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)>>simplify(P)%simple(P)

一系列化簡(jiǎn)嘗試,得出計(jì)算機(jī)認(rèn)為的最簡(jiǎn)形式ans=(s+3)^2*(s+4)^3*(s^2+3*s+2)

%(s+3)^2*(s+2)*(s+1)*(s+4)^3

>>[a,m]=simple(P)%返回化簡(jiǎn)方法為因式分解方法a=(s+3)^2*(s+2)*(s+1)*(s+4)^3m=factor>>factor(P)ans=[s+3,s+3,s+2,s+1,s+4,s+4,s+4]>>expand(P)ans=s^7+21*s^6+185*s^5+883*s^4*s^3*s^2*s變量替換

其中,f為原表達(dá)式,用x*替換x得出新的。例:求其Taylor冪級(jí)數(shù)展開(kāi)>>symsabcdt;%假設(shè)這些變量均為符號(hào)變量>>f=cos(a*t+b)+sin(c*t)*sin(d*t);%定義給定函數(shù)f(t)>>f1=subs(f,{a,b,c,d,t},{0.5*pi,pi,0.25*pi,0.125*pi,4})f1=-1基本數(shù)論運(yùn)算下取整、上取整、四舍五入、離0近方向取整、最簡(jiǎn)有理數(shù)、求模的余數(shù)、最大公約數(shù)、最小公倍數(shù)、質(zhì)因數(shù)分解、判定是否為質(zhì)數(shù)例:對(duì)下面的數(shù)據(jù)進(jìn)行取整運(yùn)算

-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187>>A=[-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187];>>floor(A)%向-inf方向取整ans=-10121-2>>ceil(A)%向+inf方向取整ans=01232-1>>round(A)%取最近的整數(shù)ans=01121-2>>fix(A)%向0的方向取整ans=00121-1例:3x3Hilbert矩陣,試用rat()函數(shù)變換>>A=hilb(3);[n,d]=rat(A)%將元素變換成最小有理數(shù),n,d分別為分子、分母矩陣。n=111111111d=123234345例:1856120,1483720,最大公約數(shù)、最小公倍數(shù),質(zhì)因數(shù)分解。>>formatlong>>m=1856120;n=1483720;[gcd(m,n),lcm(m,n)]%求m,n的最大公約數(shù)、最小公倍數(shù)。ans=1.0e+009*0.000001960000001.40508284000000>>factor(lcm(n,m))%對(duì)lcm(n,m)進(jìn)行質(zhì)因數(shù)分解。ans=222577757947例:1-100間質(zhì)數(shù)>>A=1:10;isprime(A)%若向量A中某個(gè)整數(shù)值為質(zhì)數(shù),則相應(yīng)位置為1,其他為零。ans=0110101000>>A=1:100;B=A(isprime(A))B=Columns1through162357111317192329313741434753Columns17through25596167717379838997rem(A,C)%A中元素對(duì)C中元素求模得出的余數(shù)。2.4.1循環(huán)結(jié)構(gòu)for結(jié)構(gòu)while結(jié)構(gòu)2.4MATLAB語(yǔ)言流程控制例:用循環(huán)求解>>s=0;fori=1:100s=s+i;end>>s=0;i=1;while(i<=100)s=s+i;i=i+1;end>>sum(1:100)ans=5050例:用循環(huán)求解求最小的m>>s=0;m=0;while(s<=10000),m=m+1;s=s+m;end,[s,m]%求出的m即是所求ans=10011141例:求>>tic,s=0;fori=1:100000,s=s+1/2^i+1/3^i;end;tocElapsedtimeis0.085965seconds.>>tic,i=1:100000;s=sum(1./2.^i+1./3.^i);toc%向量化所需時(shí)間少???Elapsedtimeis0.047666seconds.>>i=1:10;s=1./2.^i+1./3.^i,ss=sum(1./2.^i+1./3.^i)s=0.83330.36110.16200.07480.03540.01700.00830.00410.00200.0010ss=1.49902.4.2轉(zhuǎn)移結(jié)構(gòu)例:用循環(huán)求解求最大的m>>s=0;fori=1:10000s=s+i;ifs>10000,break;endend>>ii=1412.4.3開(kāi)關(guān)結(jié)構(gòu)和C語(yǔ)言的區(qū)別當(dāng)開(kāi)關(guān)表達(dá)式的值等于某表達(dá)式,執(zhí)行該語(yǔ)句后結(jié)束該結(jié)構(gòu),不用break當(dāng)需要在開(kāi)關(guān)表達(dá)式滿足若干個(gè)表達(dá)式之一時(shí)執(zhí)行某一程序段,則用單元形式(用大括號(hào)把這些表達(dá)式括起來(lái),用逗號(hào)分隔)otherwise語(yǔ)句,不是C語(yǔ)言中的default(但與之等價(jià))程序的執(zhí)行結(jié)果和各個(gè)case順序無(wú)關(guān)case語(yǔ)句中條件不能重復(fù),否則列在后面的條件將不能執(zhí)行全新結(jié)構(gòu)(首先試探性執(zhí)行語(yǔ)句1,若執(zhí)行過(guò)程中有錯(cuò),將錯(cuò)誤信息賦給保留的lasterr變量,并終止這段語(yǔ)句的執(zhí)行,轉(zhuǎn)而執(zhí)行語(yǔ)句2。)應(yīng)將不保險(xiǎn)但快的算法放在語(yǔ)句1,保險(xiǎn)的放在語(yǔ)句2;或語(yǔ)句2說(shuō)明語(yǔ)句1失效原因。2.4.4試探結(jié)構(gòu)函數(shù)是MATLAB編程的主流方法除了函數(shù)外,還可以采用M-script(M-腳本文件)文件M-script適合于小規(guī)模運(yùn)算例:若最大值不為10000,需修改程序?qū)和10000值的設(shè)置,不適合于M-script2.5MATLAB函數(shù)的編寫(xiě)2.5.1MATLAB語(yǔ)言的函數(shù)的基本結(jié)構(gòu)

nargin,nargout

分別表示輸入和返回變量的實(shí)際個(gè)數(shù),此為MATLAB保留變量,只要進(jìn)入該函數(shù),MATLAB就將自動(dòng)生成這兩個(gè)變量。varargin,varargout

輸入、輸出變量列表(可變輸入輸出個(gè)數(shù))。例:前面的要求,m,10000

function[m,s]=findsum(k)s=0;m=0;while(s<=k),m=m+1;s=s+m;end>>[m1,s1]=findsum(145323)m1=539s1=145530無(wú)需修改程序>>s=0;m=0;while(s<=10000),m=m+1;s=s+m;end,[s,m]ans=10011141例:若只給出一個(gè)輸入?yún)?shù),則會(huì)自動(dòng)生成一個(gè)方陣在函數(shù)中給出合適的幫助信息檢測(cè)輸入和返回變量的個(gè)數(shù)editmyhilbfunctionA=myhilb(n,m)%檢測(cè)輸入和返回變量的個(gè)數(shù)有問(wèn)題!系統(tǒng)可直接監(jiān)測(cè),版本升級(jí)??!%產(chǎn)生A=MYHILB(N,M)或A=MYHILB(N);ifnargout>1,error('Toomanyoutputarguments.');endifnargin==1,m=n;elseifnargin==0|nargin>2

error('Wrongnumberofinputarguments.');endA1=zeros(n,m);fori=1:nforj=1:mA1(i,j)=1/(i+j-1);end,endifnargout==1,A=A1;elseifnargout==0,disp(A1);end>>helpmyhilb

產(chǎn)生A=MYHILB(N,M)或A=MYHILB(N);>>A=myhilb(3,4)A=1.00000.50000.33330.25000.50000.33330.25000.20000.33330.25000.20000.1667>>A=myhilb(4)A=1.00000.50000.33330.25000.50000.33330.25000.20000.33330.25000.20000.16670.25000.20000.16670.1429>>A=myhilb(3,4,5)???Errorusing==>myhilbToomanyinputarguments.例:函數(shù)的遞歸調(diào)用:階乘functionk=my_fact(n)ifnargin~=1,error('輸入變量個(gè)數(shù)錯(cuò)誤,只能有一個(gè)輸入變量');endifnargout>1,error('輸出變量個(gè)數(shù)過(guò)多');endifabs(n-floor(n))>eps|n<0%判定n是否為整數(shù)

error('n應(yīng)該為非負(fù)整數(shù)');endifn>1%如果n>1,進(jìn)行遞歸調(diào)用

k=n*my_fact(n-1);elseifany([01]==n)%0!=1!=1k=1;end>>my_fact(11)ans=39916800

其實(shí)MATLAB提供了求取階乘的函數(shù)factorial(),其核心算法為prod(1:n),從結(jié)構(gòu)上更簡(jiǎn)單、直觀,速度也更快。>>prod(1:11)ans=39916800>>prod(1:3:11)ans=280例:conv()

可以計(jì)算兩個(gè)多項(xiàng)式的積用varargin實(shí)現(xiàn)任意多個(gè)多項(xiàng)式的積functiona=convs(varargin)a=1;fori=1:length(varargin),a=conv(a,varargin{i});end>>P=[12405];Q=[12];F=[123];D=convs(P,Q,F)D=16193645443530>>poly2sym(D)ans=x^7+6*x^6+19*x^5+36*x^4+45*x^3+44*x^2+35*x+302.5.2可變輸入輸出個(gè)數(shù)>>E=conv(conv(P,Q),F)%若采用conv()函數(shù),則需要嵌套調(diào)用E=16193645443530>>poly2sym(E)ans=x^7+6*x^6+19*x^5+36*x^4+45*x^3+44*x^2+35*x+30>>G=convs(P,Q,F,[1,1],[1,3],[1,1])G=11156176376578678648527315902.5.3幾個(gè)特殊函數(shù)inline函數(shù),可以免去文件

>>f=inline('sin(x.^2+y.^2)','x','y')>>f(2,3)MATLAB7.0(匿名函數(shù))feval函數(shù)MATLAB提供的feval()函數(shù)是用來(lái)執(zhí)行函數(shù)操作的函數(shù),故有“函數(shù)的函數(shù)”之稱(chēng),其一般調(diào)用格式為:[y1,y2,...]=feval(fhandle,x1,...,xn)[y1,y2,...]=feval(function,x1,...,xn)其中,fhandle是函數(shù)句柄,函數(shù)句柄是一種數(shù)據(jù)類(lèi)型,以“@”來(lái)引導(dǎo),例如“@sin”;function是函數(shù)名,x1,x2,...,xn是輸入?yún)?shù),相應(yīng)的y1,y2,...,yn是輸出參數(shù)。%句柄形式如下:

>>

h=@sin;

>>y=feval(h,2)

(也可以直接寫(xiě)成y=feval(@sin,2)%函數(shù)名形式:>>y=feval('sin',2)>>symst>>f=@(x,y)x^2+y^2>>k1=feval(f,1,t)>>k2=f(1,t)2.6二維圖形繪制2.6.1二維圖形繪制基本語(yǔ)句構(gòu)造向量:①t仍為向量,而y為矩陣,亦即例:選項(xiàng)為紅色點(diǎn)劃線且每個(gè)轉(zhuǎn)折點(diǎn)用五角星表示‘r-.pentagram’例:>>x=[-pi:0.05:pi];%以0.05為步距構(gòu)造自變量向量>>y=sin(tan(x))-tan(sin(x));%求出各個(gè)點(diǎn)上的函數(shù)值>>plot(x,y)>>plot(x,y,'r-.pentagram')>>x=[-pi:0.05:-1.8,-1.801:.001:-1.2,-1.2:0.05:1.2,...1.201:0.001:1.8,1.81:0.05:pi];%以變步距方式構(gòu)造自變量向量>>y=sin(tan(x))-tan(sin(x));%求出各個(gè)點(diǎn)上的函數(shù)值>>plot(x,y)%繪制曲線plot、fplot、ezplot的使用方法和區(qū)別

fplot函數(shù)通過(guò)其內(nèi)部的自適應(yīng)算法來(lái)動(dòng)態(tài)決定自變量的間隔,其一般調(diào)用格式為:fplot(fun,limits,LineSpec)>>symsx1;>>fplot('sin(tan(x1))-tan(sin(x1))',[-pi,pi])函數(shù)ezplot它無(wú)需數(shù)據(jù)準(zhǔn)備,是畫(huà)出隱函數(shù),是形如f(x,y)=0這種不能寫(xiě)出像y=f(x)這種函數(shù)的圖形,基本調(diào)用格式為ezplot(f),其中f是字符串或代表數(shù)學(xué)函數(shù)的符號(hào)表達(dá)式,只有一個(gè)符號(hào)變量.>>ezplot('sin(tan(x1))-tan(sin(x1))')例:>>x=[-2:0.02:2];%生成自變量向量>>y=1.1*sign(x).*(abs(x)>1.1)+x.*(abs(x)<=1.1);plot(x,y)>>plot([-2,-1.1,1.1,2],[-1.1,-1.1,1.1,1.1])圖形元素屬性獲取與修改

圖形中,每條曲線、坐標(biāo)軸、圖形窗口分別是一個(gè)對(duì)象??捎胹et()函數(shù)設(shè)置對(duì)象的屬性,用get()函數(shù)獲得對(duì)象的某個(gè)屬性。這兩個(gè)語(yǔ)句在界面編程中特別有用。圖形句柄和圖形之間是一種一一對(duì)應(yīng)關(guān)系,簡(jiǎn)單的說(shuō)圖形句柄就是指向了這個(gè)圖形的一個(gè)變量,通過(guò)它可以設(shè)定該圖形的各種屬性。

句柄,是整個(gè)windows編程的基礎(chǔ),一個(gè)句柄是指使用的一個(gè)唯一的整數(shù)值,用于標(biāo)志應(yīng)用程序中的不同對(duì)象和同類(lèi)對(duì)象中的不同的實(shí)例,諸如,一個(gè)窗口,按鈕,圖標(biāo),滾動(dòng)條,輸出設(shè)備,控件或者文件等,應(yīng)用程序能夠通過(guò)句柄訪問(wèn)相應(yīng)的對(duì)象的信息。2.6.2其他二維圖形繪制語(yǔ)句

二維條形圖、羅盤(pán)圖、羽毛狀圖、直方圖、極坐標(biāo)圖、階梯圖形、x-半對(duì)數(shù)圖、彗星狀軌跡圖、誤差限圖形、二維填充圖、對(duì)數(shù)圖、磁力線圖、火柴桿圖、y-半對(duì)數(shù)圖。例:繪制極坐標(biāo)曲線>>theta=0:0.01:6*pi;rho=5*sin(4*theta/3);polar(theta,rho)>>rho=5*sin(theta/3);polar(theta,rho)

周期確定,可以采用試湊方法例:用不同曲線繪制函數(shù)表示正弦曲線>>t=0:.2:2*pi;y=sin(t);%先生成繪圖用數(shù)據(jù)>>subplot(2,2,1),stairs(t,y)%分割窗口,在左上角繪制階梯曲線>>subplot(2,2,2),stem(t,y)%火柴桿曲線繪制>>subplot(2,2,3),bar(t,y)%條型圖繪制>>subplot(2,2,4),semilogx(t,y)%橫坐標(biāo)為對(duì)數(shù)的曲線例:>>t=(1/16:1/8:1)*2*pi;>>x=exp(t).*sin(t);>>y=t.*cos(t);>>fill(x,y,'k'),gridon有時(shí)候可能需要在多個(gè)圖形窗口看到繪制曲線效果,這時(shí)可以使用figure命令,創(chuàng)建多個(gè)窗口。例:在兩個(gè)窗口中分別繪制y1=cos(5x)+0.1x2

與y2=sin(3x)+0.1x的函數(shù)圖形。>>x=0:0.01:5;>>y1=cos(5*x)+0.1*x.^2;>>plot(x,y1)>>y2=sin(3*x)+0.1*x;>>figure(2)>>plot(x,y2)

圖形標(biāo)注例:分別繪制函數(shù)sin(x),sin(5x),sin(x)+sin(5x)并加一些標(biāo)注。>>x=0:0.04:20;y1=sin(x);y2=sin(5*x);y3=y1+y2;>>plot(x,y1,'*',x,y2,x,y3,':')%y1用*表示,y2用默認(rèn)的細(xì)線表示,y3用虛點(diǎn)線表示>>legend('sin(x)','sin(5x)','sin(x)+sin(5x)')%分別對(duì)用上面標(biāo)示給出圖例>>xlabel('x')%x軸標(biāo)注>>ylabel('y')%y軸標(biāo)注

>>title('thefunctonofsin')%標(biāo)題

>>grid%加坐標(biāo)格2.6.3隱函數(shù)繪制及應(yīng)用隱函數(shù)例:>>ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)')%x自選

>>ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)',[-1010])2.7三維圖形繪制2.7.1三維曲線繪制stem3(三維火柴桿型曲線),fill3(三維填充圖形),bar3(三維直方圖)等。例:參數(shù)方程>>t=0:.1:2*pi;%構(gòu)造t向量,注意下面的點(diǎn)運(yùn)算>>x=t.^3.*sin(3*t).*exp(-t);y=t.^3.*cos(3*t).*exp(-t);z=t.^2;>>plot3(x,y,z),grid%三維曲線繪制>>stem3(x,y,z);holdon;plot3(x,y,z),grid2.7.2三維曲面繪制一般曲面繪制mesh()繪制網(wǎng)格圖,surf()繪制表面圖。其它函數(shù),光照下surfl(),等高線surfc(),瀑布型waterfall()等高線繪制contour(),contour3()例:Butterworth濾波器>>[x,y]=meshgrid(0:31);n=2;D0=200;>>D=sqrt((x-16).^2+(y-16).^2);%求距離>>z=1./(1+D.^(2*n)/D0);mesh(x,y,z),%計(jì)算并繪制濾波器>>axis([0,31,0,31,0,1])%重新設(shè)置坐標(biāo)系,增大可讀性>>surf(x,y,z)%繪制三維表面圖>>contour3(x,y,z,30)%三維等高線圖,30等高線條數(shù)例:試?yán)L制出二元函數(shù)

>>[x,y]=meshgrid(-2:.1:2);>>z=1./(sqrt((1-x).^2+y.^2))+1./(sqrt((1+x).^2+y.^2));Warning:Dividebyzero.(Type"warningoffMATLAB:divideByZero"tosuppressthiswarning.)Warning:Dividebyzero.(Type"warningoffMATLAB:divideByZero"tosuppressthiswarning.)>>surf(x,y,z),shadingflat%修飾其顯示形式>>xx=[-2:.1:-1.2,-1.1:0.02:-0.9

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論