管理數學實驗- MATLAB在管理運籌中的應用 2-管理數學實驗-MATLAB基礎_第1頁
管理數學實驗- MATLAB在管理運籌中的應用 2-管理數學實驗-MATLAB基礎_第2頁
管理數學實驗- MATLAB在管理運籌中的應用 2-管理數學實驗-MATLAB基礎_第3頁
管理數學實驗- MATLAB在管理運籌中的應用 2-管理數學實驗-MATLAB基礎_第4頁
管理數學實驗- MATLAB在管理運籌中的應用 2-管理數學實驗-MATLAB基礎_第5頁
已閱讀5頁,還剩184頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章MATLAB基礎

1、MATLAB語言概述

2、MATLAB的基本運算

3、MATLAB繪圖

4、MATLAB的符號處理

5、MATLAB數據的輸入輸出6、MATLAB數據統計描述和分析1、MATLAB語言概述1.1MATLAB語言的發展matlab語言是由美國的CleverMoler博士于1980年開發的MATLAB=

MatrixLaboratory它將一個優秀軟件的易用性與可靠性、通用性與專業性、一般目的的應用與高深的科學技術應用有機的結合MATLAB是一種直譯式的高級語言,比其它程序設計語言簡單易用2000年,發布MATLAB6.0;2002年,發布MATLAB6.5;2004年,發布MATLAB7.0;2005年,發布MATLAB7.1;2006年3月,發布MATLABR2006a(V7.2);2006年9月,發布MATLABR2006b(V7.3);2007年3月,發布MATLABR2007a(V7.4);2007年9月,發布MATLABR2007b(V7.5);2008年3月,發布MATLABR2008a(V7.6);2008年9月,發布MATLABR2086b(V7.7);2009年3月,發布MATLABR2009a(V7.8);2009年9月,發布MATLABR2009b(V7.9);2010年3月,發布MATLABR2010a(V7.10);2010年9月,發布MATLABR2010b(V7.11);2011年4月,發布MATLABR2011a(V7.12);2011年9月,發布MATLABR2011b(V7.13);2012年3月,發布MATLABR2012a(V7.14);2012年9月,發布MATLABR2012b(V8.0);2013年3月,發布MATLABR2013a(V8.1)。MATLABR2017b。1.2matlab在各領域的應用工業研究與開發數學教學,特別是線性代數數值分析和科學計算方面的教學與研究電子學、控制理論和物理學等工程和科學經濟學、化學和生物學等計算問題的所有其他領域中的教學與研究各種模型的分析與計算MATLAB語言的簡潔高效性MATLAB強大的科學運算功能MATLAB豐富的繪圖功能MATLAB龐大的工具箱與模塊集MATLAB強大的動態系統仿真功能MATLAB作為線性系統的一種分析和仿真工具,是理工科學生應該掌握的技術工具,它作為一種編程語言和可視化工具,可解決工程、科學計算和數學學科中許多問題。1.3MATLAB語言的功能強大的數值(矩陣)運算廣泛的符號運算功能高級與低級兼備的圖形功能計算結果的可視化可靠的容錯功能應用靈活的兼容與接口功能信息量豐富的聯機檢索功能(1)矩陣運算功能MATLAB提供了豐富的矩陣運算處理功能基于矩陣運算的處理工具。變量

矩陣,運算

矩陣的運算例如C=A+B,A,B,C都是矩陣,是矩陣的加運算一個數,x=5,MATLAB看做是一個11的矩陣(2)符號運算功能符號運算即用字符串進行數學分析允許變量不賦值而參與運算用于解代數方程、微積分、復合導數、積分、二重積分、有理函數、微分方程、泰樂級數展開、尋優等等,可求得解析符號解(3)豐富的繪圖功能與計算結果的可視化具有高層繪圖功能——兩維、三維繪圖具有底層繪圖功能——句柄繪圖使用plot函數可隨時將計算結果可視化(4)圖形化程序編制功能動態系統進行建模、仿真和分析的軟件包用結構圖編程,而不用程序編程只需拖幾個方塊、連幾條線,即可實現編程功能(5)豐富的MATLAB工具箱MATLAB主工具箱符號數學工具箱SIMULINK仿真工具箱控制系統工具箱信號處理工具箱圖象處理工具箱通訊工具箱系統辨識工具箱神經元網絡工具箱金融工具箱優化工具箱……MATLAB中變量的命名規則是:(1)變量名必須是不含空格的字符串;(2)變量名以字母開頭,之后可以是任意字母、數字或下劃線,變量名中不允許使用標點符號.(3)變量名區分大小寫;(4)變量名最多不超過19個字符;

MATLAB的保留常量eps,pi,NaN,Inf,i,j,i=sqrt(-1)lastwarn,lasterr

1.4MATLAB語言基礎特殊變量表數值型數據結構(1)雙精度數值變量IEEE標準,64位(8字節),11指數位,53數值位和一個符號位-1.7*10308

至1.7*10308double()函數的轉換(2)其他數據類型uint8,常用于圖像表示和處理,8位int8(),int16(),int32(),uint16(),uint32()符號型變量數據類型(3)符號型,sym(A),常用于公式推導變量聲明symsABCpositivesym(sin(x))采用變精度函數求值vpa(A),或vpa(A,n)例求出p

的300位有效數字

vpa(pi,300)MATLAB支持的其他數據結構(4)基本數值變量類型:雙精度復數矩陣(5)字符串型數據:用單引號括起來(6)多維數組:是矩陣的直接擴展,多個下標(7)單元數組:將不同類型數據集成到一個變量名下面,用{}表示。例。(8)結構體:A.b,引用也用A.b,不是A->b(9)類與對象:可以定義重載函數返回例:單元(元胞)數組的創建C_str=char('北京理工大學','管理科學與工程系');R=reshape(1:9,3,3);Cn=[1+2i,1-2i];

S_sym=sym('sin(-3*t)*exp(-t)');%符號函數量(1)直接創建法之一:“外標識單元元素賦值法”(2)直接創建法之二:“編址單元元素內涵的直接賦值法”A(1,1)={C_str};A(1,2)={R};A(2,1)={Cn};A(2,2)={S_sym};A%顯示單元數組類型B{1,1}=C_str;B{1,2}=R;B{2,1}=Cn;B{2,2}=S_sym;celldisp(B)%顯示單元數組內容結構體示例:通過溫室數據(包括溫室名、容積、溫度、濕度等)演示:結構體green_house的創建和顯示。(它有三個域:name,volume,parameter。而parameter又有三個子域:temperature,humidity。)(1)直接對域賦值產生“結構體”,即結構數組。green_=‘一號房’;結構的域由(結構名).(域名)標識。green_house.volume='2000立方米';green_house.parameter.temperature=…[31.230.431.628.7

29.731.130.929.6];green_house.parameter.humidity…=[62.159.557.761.562.061.959.257.5];(2)顯示“結構體”結構和內容:green_house,……返回MATLAB的基本語句結構

>>A=[1,2,3;45,6;7,8,0]>>A=[1,2,3;45,6;7,8,0];>>A=[[A;[1,2,3]][4;5;6;7];函數調用語句冒號表達式[返回變量列表]=函數名(輸入變量列表)[a,b,c]=myfun(d,e,f,g)v=s1:s2:s3例用不同的步距生成(0,p)間向量

>>v1=0:0.2:pi

>>v2=0:-0.1:pi

>>v3=0:pi

>>v4=pi:-1:0

>>v5=[0:0.2:pi,pi]

>>v6=[pi:-1:00]子矩陣提取基本語句格式例子矩陣提取提取A

矩陣全部奇數行,所有列提取A

矩陣3,2,1行、2,3,4列構成子矩陣將A

矩陣左右翻轉B3=A(:,end:-1:1)B1=A(1:2:end,:)B2=A([3,2,1],[2,3,4])B=A(v1,v2)2.1創建矩陣2.2矩陣運算2.3多項式運算2.4線性方程組2.5MATLAB語言流程控制2.6數學函數2.7.m文件2、MATLAB的基本運算2.1創建矩陣規則:矩陣元素必須用[]括住矩陣元素必須用逗號或空格分隔

[]內矩陣的行與行之間必須用分號分隔矩陣元素任何matlab表達式可以是實數,也可以是復數,復數可用i,j輸入

a=[123;456]x=[2pi/2;sqrt(3)3+5i]

矩陣的建立逗號或空格作用:分隔某一行的元素。分號作用:區分不同的行。Enter鍵作用之一:輸入矩陣時,按Enter鍵開始一新行。注意:輸入矩陣時,嚴格要求所有行有相同的列。

例m=[1234;5678;9101112]p=[111122223333]創建簡單的數組x=[a,b,

c,

d,

e,

f]創建包含指定元素的行向量x=first:last

創建從first開始,加1計數,到last結束的行向量x=first:increment:last創建從first開始,加increment計數,last結束的行向量x=linspace(first,last,n)創建從first開始,到last結束,有n個元素的行向量x=logspace(first,last,n)創建從10first開始,到10last結束,n個元素為10.^linspace(first,last,n)的對數分隔行向量數組元素的訪問(1)訪問一個元素:x(i)表示訪問數組x的第i個元素。(2)訪問一塊元素:x(b:s:e)表示訪問數組x的從第b個元素開始,以步長為s到第e個元素(但不超過e),s可以為負數,s缺省時為1。(3)直接使用元素編址序號:x([ijkl])表示提取數組x的第i、i、k、l個元素構成一個新的數組[x(i),x(j),x(k),x(l)]。符號的作用逗號和分號的作用逗號和分號可作為指令間的分隔符,matlab允許多條語句在同一行出現。分號如果出現在指令后,屏幕上將不顯示結果。當一個指令或矩陣太長時,可用”…”續行冒號的作用用于生成等間隔的向量,默認間隔為1。用于選出矩陣指定行、列及元素。循環語句用matlab函數創建矩陣a=[]——空陣[],大小為零,Matlab允許輸入空陣,當一項操作無結果時,返回空陣。rand——隨機矩陣,b=rand([m,]n)eye——單位矩陣,c=eye(n)zeros——全部元素都為0的矩陣,d=zeros([m,]n)ones——全部元素都為1的矩陣,e=ones(m,n)還有伴隨矩陣、稀疏矩陣、魔方矩陣、對角矩陣、范德蒙等矩陣的創建,就不一一介紹了。注意:matlab嚴格區分大小寫字母。

matlab函數名必須小寫。矩陣中元素的操作(1)矩陣A的第r行:A(r,:)(2)矩陣A的第j列:A(:,j)(3)依次提取矩陣A的每一列,將A拉伸為一列向量:

A(:)(4)取矩陣A的第i1~i2行、第j1~j2列構成新矩陣:

A(i1:i2,j1:j2)(5)逆序提取矩陣A的第i1~i2行,構成新矩陣:

A(i2:-1:i1,:)(6)逆序提取矩陣A的第j1~j2列,構成新矩陣:

A(:,j2:-1:j1)(7)刪除A的第i1~i2行,構成新矩陣:A(i1:i2,:)=[](8)刪除A的第j1~j2列,構成新矩陣:A(:,j1:j2)=[](9)將矩陣A和B拼接成新矩陣:[A,B];[A;B]2.2矩陣運算1)矩陣加、減(+,-)運算規則:相加、減的兩矩陣必須有相同的行和列;允許參與運算的兩矩陣之一是標量:標量與矩陣的所有元素分別進行加減操作。2)矩陣乘()運算規則:A矩陣的列數必須等于B矩陣的行數標量可與任何矩陣相乘。a=[123;456;780];b=[1;2;3];c=a*bc=143223

3)矩陣乘方——a^n,a^p,p^a

a^p——a自乘p次冪

方陣>1的整數對于p的其它值,計算將涉及特征值和特征向量如果p是矩陣,a是標量a^p使用特征值和特征向量自乘到p次冪;如a,p都是矩陣,a^p則無意義。當一個方陣有復數特征值或負實特征值時,非整數冪是復數陣。if[V,D]=eig(a),thena^p=V*D.^p/V4)矩陣的其它運算inv——矩陣求逆,inv(A)det——方陣行列式的值,det(A)eig——矩陣的特征值,[V,D]=eig[A]diag——對角矩陣,

'——矩陣轉置sqrt——矩陣開方5)借助cat,repmat,reshape等函數構作高維數組

cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3)

ans(:,:,1)=ans(:,:,2)=ans(:,:,3)=111222333111222333reshape(1:12,2,2,3)

ans(:,:,1)=ans(:,:,2)=ans(:,:,3)=135791124681012repmat(ones(2,3)*2,[1,1,3])ans(:,:,1)=ans(:,:,2)=ans(:,:,3)=2222222222222222226)矩陣的一些特殊操作矩陣的變維

a=[1:12];b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:)矩陣的變向

rot90:旋轉;fliplr:左右翻;flipud:上下翻矩陣的抽取

diag:抽取主對角線;tril:抽取主下三角;

triu:抽取主上三角維數、大小、長度和降維

ndims(A);size(A);length(A);squeeze(A)

7)矩陣的數組運算

數組運算指元素對元素的算術運算,與通常意義上的由符號表示的線性代數矩陣運算不同數組加減(.+,.-)(與矩陣加減等效)

a.+b=a+ba.-b=a–b數組乘除(,./,.\)ab——a,b兩數組必須有相同的行和列兩數組對應元素相乘。a./b=b.\aa.\b=b./a——

給出a,b對應元素間的商例:a=[123];b=[456];c1=a.\b;c2=b./ac1=4.00002.50002.0000c2=4.00002.50002.0000數組乘方(.^)—元素對元素的冪例:a=[123];b=[456];z=a.^2z=1.004.009.00z=a.^bz=1.0032.00729.008)矩陣的邏輯運算邏輯變量:當前版本有邏輯變量對double變量來說,非0表示邏輯1邏輯運算(相應元素間的運算)與運算A&B或運算A|B非運算~A異或運算xor(A,B)9)矩陣的比較運算各種允許的比較關系

>,>=,<,<=,==,~=,find(),all(),any()實例Linear_index=find(R>0)

>>A=[1,2,3;4,5,6;7,8,9];find(A>=5)’,any(A>=5)>>[i,j]=find(A>=5)>>all(A>=5),A>=510)數據類型轉換函數int2str;num2str;mat2str;str2mat;str2numeval(Expression)

eval(expression,catch_expr)[a1,a2,a3,...]=eval(‘function(b1,b2,b3,...)’)strcat(s1,s2,...),strvcat(s1,s2,...)fprintf(fileID,formatSpec,A1,…,An),str=sprintf(formatSpec,A1,…,An),A=sscanf(str,format)A=eye(2,4);A_str1=int2str(A)

rand('state',0);B=rand(2,4);B3=num2str(B,3)B_str=mat2str(B,4)fprintf,sprintf,sscanfs_s=sprintf('%.10e\n',B)

[s,errmsg]=sprintf(format,A,...)11)基本數論運算RemainderGreatestcommondivisorLeastcommonmultiplePrimefactorsRationalfractionapproximation函數名調用格式floor()ceil()round()fix()rat()rem()gcd()lcm()factor()isprime()n=floor(x)n=ceil(x)n=round(x)n=fix(x)[n,d]=rat(x)B=rem(A,C)k=gcd(n,m)k=lcm(n,m)k=factor(n)v1=isprime(v)例對下面的數據進行取整運算

-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187例3×3Hilbert矩陣,試用rat()函數變換例1856120,1483720,最大公約數、最小公倍數,質因數分解例1-1000間質數N./DapproximatingAmatlab語言把多項式表達成一個行向量,該向量中的元素是按多項式降冪排列的。

f(x)=anxn+an-1xn-1+……+a0

可用行向量p=[anan-1……a1a0]表示poly——

產生特征多項式系數向量特征多項式一定是n+1維的特征多項式第一個元素一定是12.3多項式運算例:a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00p是多項式p(x)=x3-6x2-72x-27的matlab描述方法,可用:p1=poly2str(p,‘x’)—函數文件,顯示數學多項式的形式p1=x^3-6x^2-72x-27roots——

求多項式的根a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)r=12.12-5.73——

顯然r是矩陣a的特征值

-0.39可用poly返回多項式形式p2=poly(r)p2=1.00-6.00-72.00-27.00conv,convs多項式乘運算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=[123];b=[456];c=conv(a,b)=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+18deconv多項式除運算a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余數c除a后的整數多項式微分matlab提供了polyder函數多項式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多項式a,b乘積的微分[p,q]=polyder(a,b):求多項式a,b商的微分

deconv(p,q)例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyder(a)

b=4664poly2str(b,'x')

ans=4x^3+6x^2+6x+42.4代數方程組求解Matlab中有兩種除運算左除和右除。對于方程Ax=b,A為m×n矩陣Am×n,有三種情況:當n=m時,此方程成為“恰定”方程當n<m時,此方程成為“超定”方程當n>m時,此方程成為“欠定”方程matlab定義的除運算可解上述三種方程1)恰定方程組的解方程Ax=b(A為非奇異)

x=A-1

b兩種解語句:x=inv(A)b

——

采用求逆運算解方程x=A\b——

采用左除運算解方程2)超定方程組的解方程Ax=b,n<m時此時不存在唯一解。方程解(A'A)x=A'bx=(A'A)-1

A'b——

求逆法

x=A\b——matlab用最小二乘法找一個近似的解。A=[12;23;34];b=[1;2;3];

解1

x=A\b

解2x=inv(A'A)

A'b

x=x=1.001.0000.00

=Ax=b3)欠定方程組的解當方程數少于未知量個數時,即不定情況,有無窮多個解存在。matlab可求出兩個解:用除法求的解x是具有最多零元素的解基于偽逆pinv求得具有最小長度或范數的解A=[123;234];b=[1;2];

x=A\bx=pinv(A)bx=x=1.000.8300.330-0.17=Ax=b2.4MATLAB語言流程控制

2.4.1循環結構for結構while結構fori=V

循環結構體endwhile(條件式)

循環結構體end例用循環求解例用循環求解求最小的m例求>>tic,s=0;fori=1:100000,s=s+1/2^i+1/3^i;end;toc>>tic,i=1:100000;s=sum(1./2.^i+1./3.^i);toc

2.5.2條件結構if(條件表達式1)%若條件1滿足,則執行語句組1

語句組1%可以嵌套下一層的

if結構elseif(條件表達式2)%若條件2滿足,則執行語句組2

語句組2

┆┆%可設置n種轉移條件

else%上面n種條件均不滿足,則執行語句組n+1

語句組n+1end

s=0;form=1:100000s=s+i;

ifs>10000

break;end;end;2.5.3開關結構switch(開關表達式

)case表達式1%若表達式1與開關表達式一致,則執行語句組1

語句組1%可以嵌套下一層的

case結構case{表達式2.1,表達式2.2,…

表達式2-m}

語句組2%若條件2之一滿足表達式

,則執行語句組2

┆┆%可設置n種開關表達式otherwise%上面n種表達式均不滿足,則執行語句組n+1

語句組n+1end和C語言的區別當開關表達式的值等于某表達式,執行該語句后結束該結構,不用break同時滿足若干個條件之一,則用單元形式otherwise語句,不是default程序的執行結果和各個case順序無關case語句中條件不能重復,否則列在后面的條件將不能執行2.5.4試探結構全新結構try,

語句段1,

catch,

語句段2,end2.6數學函數函數是MATLAB編程的主流方法除了函數外,還可以采用M-script文件M-script適合于小規模例前例中,若最大值不為10000,需修改程序,如M-script更適合變化的K。

MATLAB的內部函數是有限的,有時為了研究某一個函數的各種性態,需要為MATLAB定義新函數,為此必須編寫函數文件.函數文件是文件名后綴為M的文件,這類文件的第一行必須是一特殊字符function開始,格式為:

function因變量名=函數名(自變量名)函數值的獲得必須通過具體的運算實現,并賦給因變量.

2.7.M文件M文件建立方法:(1)在Matlab中,點:File->New->M-file(2)在編輯窗口中輸入程序內容

(3)點:File->Save,存盤,M文件名必須與函數名一致。Matlab的應用程序也以M文件保存。例:定義函數f(x1,x2)=100(x2-x12)2+(1-x1)2function

f=fun(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^21)建立M文件:fun.m2)可以直接使用函數fun.m例如:計算f(1,2),只需在Matlab命令窗口鍵入命令:x=[12]fun(x)2.7.1MATLAB語言函數的基本結構

nargin,nargout,varargin,varargoutfunction[返回變量列表]=函數名(輸入變量列表)

注釋說明段,有%引導

輸入、返回變量格式的檢測

函數體語句段例對于變化K的解決方案無需修改程序function[m,s]=findsum(k)s=0;m=0;

while(s<=k),m=m+1;m=m+1;s=s+m;end>>[m,s]=findsum(145323)例若只給出一個輸入參數,則會自動生成一個方陣在函數中給出合適的幫助信息檢測輸入和返回變量的個數editmyhilbn×m階的Hilbert矩陣

functionA=myhilbert(n,m)

ifnargin==1,m=n;elseifnargin==0|nargin>2error(‘Wrongnumberofinputarguments.’);else

fori=1:nforj=1:mA(i,j)=1/(i+j-1);endendendhelpmyhilbertA=myhilbert(3,4)A=myhilbert(4)例函數的遞歸調用:階乘functionk=my_fact(n)

ifn>1%如果n>1,則進行遞歸調用

k=n*my_fact(n-1);

elseifany([01]==

n%0!=1!=1

k=1;

endendn!=n*(n-1)!2.7.2可變輸入輸出個數例可以計算兩個多項式的積用varargin實現任意多個多項式的積p=conv(p1,p2)functionp=convs(varargin)p=1;for1:length(varargin),p=conv(p,varargin{i});

endendP=[12405];Q=[12];F=[123]D=convs(P,Q,F)2.7.3inline函數和匿名函數inline函數,可以免去文件MATLAB7.0之后fun=inline(‘函數內容’,自變量列表)fun=@(自變量列表)函數內容,例如,f=@(x,y)sin(x.^2+y.^2)3、Matlab繪圖——Matlab語言豐富的圖形表現方法,使得數學計算結果可以方便地、多樣性地實現了可視化,這是其它語言所不能比擬的。matlab語言的繪圖功能

不僅能繪制幾乎所有的標準圖形,而且其表現形式也是豐富多樣的。

matlab語言不僅具有高層繪圖能力,而且還具有底層繪圖能力——句柄繪圖方法。在面向對象的圖形設計基礎上,使得用戶可以用來開發各專業的專用圖形。3.1二維繪圖3.1.1plot——

最基本的二維圖形指令plot的功能:

plot命令自動打開一個圖形窗口Figure

用直線連接相鄰兩數據點來繪制圖形根據圖形坐標大小自動縮擴坐標軸,將數據標尺及單位標注自動加到兩個坐標軸上,可自定坐標軸,可把x,y軸用對數坐標表示如果已經存在一個圖形窗口,plot命令則清除當前圖形,繪制新圖形可單窗口單曲線繪圖;可單窗口多曲線繪圖;可單窗口多曲線分圖繪圖;可多窗口繪圖可任意設定曲線顏色和線型可給圖形加坐標網線和圖形加注功能plot的調用格式

plot(x)——

缺省自變量繪圖格式,x為向量,以x元素值為縱坐標,以相應元素下標為橫坐標繪圖

plot(x,y)——

基本格式,以y(x)的函數關系作出直角坐標圖,如果y為n×m的矩陣,則以x為自變量,作出m條曲線二維圖形繪制基本語句構造向量:x=x1,x2,…,xny=y(x1),y(x2),…,y(xn)x=[x1,x2,…,xn]y=[y(x1),y(x2),…,y(xn)]plot(x,y)xx(x1,y1),(x2,y2)…,(xn,yn)plot(x1,y1,x2,y2,…,xn,yn)多條曲線繪圖格式x選項取值指定曲線的線型和顏色表plot(x1,y1,選項1,x2,y2,選項2,…,xn,yn,選項n)plot(x,y,’s’)——

開關格式,開關量字符串s設定曲線顏色和繪圖方式,使用顏色字符串的前1~3個字母,如

yellow—yel表示等。或plot(x1,y1,’s1’,x2,y2,’s2’,…)S的標準設定值如下:

字母顏色標點線型

y黃色·點線

m粉紅○圈線

c亮藍××線

r大紅++字線

g綠色-實線

b藍色星形線

w白色:虛線

k黑色-·(--)點劃線Matlab線形:[+|o|*|.|x|square|diamond|v|^|>|<|pentagram|hexagram]square正方形

diamond菱形

pentagram五角星

hexagram六角星(1)單窗口單曲線繪圖例:x=[0,0.48,0.84,1,0.91,0.6,0.14][x1,x2,x3,x4,x5,x6,x7,]plot(x)(2)單窗口多曲線繪圖例:x=0:pi/100:2*pi;y=sin(x);y1=sin(x+0.25);y2=sin(x+0.5);plot(x,y,x,y1,x,y2)yy1y2例:y=sin(x);y1=sin(x+0.25);y2=sin(x+0.5);

y3=cos(x);y4=cos(x+0.25);y5=cos(x+0.5);

plot(x,[y',y1',y2',y3',y4',y5'])y3=cos(x);y4=cos(x+0.25);y5=cos(x+0.5);plot(x,y3);holdon;plot(x,y4);plot(x,y5);x=peaks;plot(x)x=1:length(peaks);y=peaks;plot(x,y)(3)單窗口多曲線分圖繪圖subplot——

子圖分割命令調用格式:

subplot(m,n,p)

——

按從左至右,從上至下排列行列繪圖序號subplot(1,3,1);plot(x,y)

subplot(1,3,2);plot(x,y3)

subplot(1,3,3);plot(x,y2)subplot(3,1,1);

plot(x,y)

subplot(3,1,2);

plot(x,y3)

subplot(3,1,3);

plot(x,y2)

subplot('position',[leftbottomwidthheight])Left,bottom,width,height

∈[0,1]clf;x=(pi*(0:1000)/1000)';y1=sin(x);y2=sin(10*x);y12=sin(x).*sin(10*x);subplot(2,2,1),plot(x,y1);axis([0,pi,-1,1])subplot(2,2,2),plot(x,y2);axis([0,pi,-1,1])subplot('position',[0.2,0.05,0.6,0.45]) plot(x,y12,'b-',x,[y1,-y1],'r:');axis([0,pi,-1,1])

subplot('position',[leftbottomwidthheight])Left,bottom,width,height

∈[0,1]clf;x=(pi*(0:1000)/1000)';y1=sin(x);y2=sin(10*x);y12=sin(x).*sin(10*x);subplot(2,2,1),plot(x,y1);axis([0,pi,-1,1])subplot(2,2,2),plot(x,y2);axis([0,pi,-1,1])subplot('position',[0.2,0.05,0.6,0.45]) plot(x,y12,'b-',x,[y1,-y1],'r:');axis([0,pi,-1,1])

(4)多窗口繪圖figure(n)——創建窗口函數,n為窗口順序號。x=0:pi/100:2*pi;y=sin(x);y1=sin(x+0.25);y2=sin(x+0.5);plot(x,y)——自動出現第一個窗口figure(2)plot(x,y1)——

在第二窗口繪圖figure(3)plot(x,y2)——在第三窗口繪圖(5)可任意設置顏色與線型例:plot(x,y,'r-',x,y1,'g:',x,y2,'b*')(6)圖形加注功能將標題、坐標軸標記、網格線及文字注釋加注到圖形上,這些函數為:title('string','PropertyName',PropertyValue,...)

——

給圖形加標題

xlabel('string')

——

給x軸加標注

ylabel('string')

——

給y軸加標注

text(x,y,'string')

——

在圖形指定位置加標注

gtext('string')

——

將標注加到圖形任意位置

gridon(off)

——

打開、關閉坐標網格線

legend

——

添加圖例

axis

——

控制坐標軸的刻度例:t=0:0.1:10y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--');x=[1.7*pi;1.6*pi];y=[-0.3;0.8];s=['sin(t)';'cos(t)'];text(x,y,s);title('正弦和余弦曲線');legend('正弦','余弦')xlabel('時間t'),ylabel('正弦、余弦')gridaxissquare

axis的用法還有:

axis([xminxmaxyminymax])——用行向量中給出的值設定坐標軸的最大和最小值如axis([-2

205])axis(equal)——

將兩坐標軸設為相等

axison(off)——

顯示和關閉坐標軸的標記、標志axisauto——

將坐標軸設置返回自動缺省值(7)fplot——

繪制函數圖函數fplot的調用格式:fplot(fun,lims)—

繪制函數fun在x區間lims=[xminxmax]的函數圖。fplot(fun,lims,'corline')—以指定線形繪圖。[x,y]=fplot(fun,lims)—

只返回繪圖點的值,而不繪圖。用plot(x,y)來繪圖。fplot('[sin(x),tan(x),cos(x)]',2*pi*[-11-11])

fplot('humps',[01],'rp')(8)ezplot—符號函數的簡易繪圖函數ezplot的調用格式:ezplot(f)—這里f為包含單個符號變量x的符號表達式,在x軸的默認范圍[-2*pi2*pi]內繪制f(x)的函數圖ezplot(f,xmin,xmax)—給定區間ezplot(f,[xmin,xmax],figure(n))—指定繪圖窗口繪圖。ezplot('sin(x)')

ezplot('sin(x)','cos(y)',[-4*pi4*pi],figure(2))繪圖:>>ezplot('sin(x)^2+cos(y)^2-1')例sin2(x)+con2(y)=1隱函數繪制及應用隱函數:例3.1.2其他二維圖形繪制語句bar––––繪制直方圖compass––––復數向量圖(羅盤圖)feather––––復數向量投影圖(羽毛圖)hist––––繪制統計直方圖polar––––繪制極坐標圖stairs––––繪制階梯圖comet––––繪制彗星曲線

errorbar––––繪制誤差棒圖

fill––––繪制二維多邊形圖

loglog––––繪制對數坐標圖

quiver––––向量場圖

stem––––繪制火柴桿圖area––––區域圖

rose––––繪制統計扇形圖(玫瑰)pie––––餅圖

convhull––––凸殼圖

scatter––––離散點圖fill:繪制二維多邊形并填充顏色例:x=[12345];y=[41514];fill(x,y,'r')例,繪制階梯曲線x=0:pi/20:2*pi;y=sin(x);stairs(x,y)例:階梯繪圖h2=[11;1-1];h4=[h2h2;h2-h2];h8=[h4h4;h4-h4];t=1:8;subplot(8,1,1);stairs(t,h8(1,:));axis('off')subplot(8,1,2);stairs(t,h8(2,:));axis('off')subplot(8,1,3);stairs(t,h8(3,:));axis('off')subplot(8,1,4);stairs(t,h8(4,:));axis('off')subplot(8,1,5);stairs(t,h8(5,:));axis('off')subplot(8,1,6);stairs(t,h8(6,:));axis('off')subplot(8,1,7);stairs(t,h8(7,:));axis('off')subplot(8,1,8);stairs(t,h8(8,:));axis('off')h2=[11;1-1];h4=[h2h2;h2-h2];h8=[h4h4;h4-h4];t=1:8;fori=1:8subplot(8,1,i);stairs(t,h8(i,:))axis('off')end例:繪制極坐標繪圖t=0:2*pi/90:2*pi;y=cos(4*t);polar(t,y)例:繪制火柴桿繪圖

t=0:0.2:2*pi;y=cos(t);stem(y)例:繪制直方圖

t=0:0.2:2*pi;y=cos(t);bar(y)例:繪制彗星曲線圖t=-pi:pi/500:pi;y=tan(sin(t))-sin(tan(t));comet(t,y)x=magic(6);area(x)x=[1234567];y=[0001000];pie(x,y)pie(x,y,{'North','South','East','West','middle','fa','white'})loadseamount

scatter(x,y,50,z)a=rand(200,1);b=rand(200,1);c=rand(200,1);

scatter(a,b,100,c,'p')3.2三維繪圖三維繪圖的主要功能:繪制三維線圖繪制等高線圖繪制偽彩色圖繪制三維網線圖繪制三維曲面圖、柱面圖和球面圖繪制三維多面體并填充顏色3.2.1三維線圖plot3——

基本的三維圖形指令調用格式:plot3(x,y,z)——x,y,z是長度相同的向量plot3(X,Y,Z)——X,Y,Z是維數相同的矩陣plot3(x,y,z,s)——

帶開關量plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',…)二維圖形的所有基本特性對三維圖形全都適用。定義三維坐標軸大小

axis([xminxmaxyminymaxzminzmax

])gridon(off)繪制三維網格

text(x,y,z,‘string’)三維圖形標注子圖和多窗口也可以用到三維圖形中例:繪制三維線圖t=0:pi/50:10*pi;plot3(t,sin(t),cos(t),'r:')3.2.2三維餅圖

pie3([43689])3.2.3三維多邊形fill3=fill——

三維多邊形的繪制和填色與二維多邊形完全相同調用格式:

fill3(x,y,z,‘s’)——

與二維相同例:用隨機頂點坐標畫出5個粉色的三角形,并用黃色的○表示頂點y1=rand(3,5);y2=rand(3,5);y3=rand(3,5);fill3(y1,y2,y3,'m');holdon;plot3(y1,y2,y3,'yo')3.2.4三維網格圖mesh——

三維網線繪圖函數調用格式:

mesh(z)

——

z為n×m的矩陣,x與y

坐標為元素的下標

mesh(x,y,z)——x,y,z分別為三維空間的坐標位置例,矩陣的三維網線圖z=rand(6);0.99610.77490.80010.13610.62210.12330.07820.81730.43140.86930.35100.18390.44270.86870.91060.57970.51320.24000.10670.08440.18180.54990.40180.41730.96190.39980.26380.14500.07600.04970.00460.25990.14550.85300.23990.9027z=round(z)

111010010100011110000100100000000101mesh(z)例:8階hadamard矩陣的網線圖h2=[11;1-1];h4=[h2h2;h2-h2]h8=[h4h4;h4-h4]111111111-11-11-11-111-1-111-1-11-1-111-1-111111-1-1-1-11-11-1-11-1111-1-1-1-1111-1-11-111-1mesh(h8)三維網線圖作圖要領生成坐標——[X,Y]=meshgrid(x,y)表達式點運算——Z=X.^2+Y.^2x——1×n的矩陣y——1×m的矩陣X,Y是n×m的矩陣,維數可任定X——nY——mZ——默認方位角:37。5o,俯角30o。m×n維meshgrid——

網線坐標值計算函數

z=f(x,y)—根據x,y坐標找出z的高度例:繪制z=x2+y2的三維網線圖形

x=-5:5;y=x;[X,Y]=meshgrid(x,y)Z=X.^2+Y.^2

mesh(X,Y,Z)坐標矩陣坐標向量縱坐標矩陣繪圖函數colormap([R,G,B])——

色圖設定函數matlab的顏色數據集合為紅、綠、藍三顏色矩陣[R,G,B],維數m×3r,g,b在[01]區間連續取值,理論上顏色種類可達無窮多種matlab使用三維向量表示一種顏色,常用顏色數據見下表飽和色

[000]—黑色

[001]—蘭色

[010]—綠色

[011]—淺蘭

[100]—紅色

[101]—粉紅

[110]—黃色

[111]—白色調和色[]—

灰色[0.500]—

暗紅色[10.620.4]—

銅色[0.4910.8]—

淺綠[0.4910.83]—寶石蘭3.2.5三維曲面圖surf——

三維曲面繪圖函數,與網格圖看起來一樣與三維網線圖的區別:網線圖:線條有顏色,空擋是黑色的(無顏色)曲面圖:線條是黑色的,空擋有顏色(把線條之間的空擋填充顏色,沿z軸按每一網格變化)調用格式:surf(x,y,z)——

繪制三維曲面圖,x,y,z

為圖形坐標向量例:[X,Y,Z]=peaks(30)※peaks為matlab自動生成的三維測試圖形surf(X,Y,Z)

surfc(X,Y,Z)—帶等高線的曲面圖

[X,Y,Z]=peaks(30);surfc(X,Y,Z)surfl(X,Y,Z)——

被光照射帶陰影的曲面圖[X,Y,Z]=peaks(30);surfl(X,Y,Z)

cylinde(r,n)—三維柱面繪圖函數

r為半徑;n為柱面圓周等分數例:繪制三維陀螺錐面t1=0:0.1:0.9;t2=1:0.1:2;r=[t1-t2+2];[x,y,z]=cylinder(r,30);surf(x,y,z);grid

為球面等分數,缺省為20例:繪制三維球面[x,y,z]=sphere(30);surf(x,y,z);3.2.6

圖形修飾方法圖形顏色的修飾matlab有極好的顏色表現功能,其顏色數據又構成了一維新的數據集合,也可稱為四維圖形colormap(MAP)——

色圖設定函數,MAP為m×3維色圖矩陣圖形顏色可根據需要任意生成,也可用matlab配備的色圖函數matlab的色圖函數:

hsv——飽和值色圖

gray——線性灰度色圖

hot——暖色色圖

cool——冷色色圖

bone——蘭色調灰色圖

copper——銅色色圖

pink——粉紅色圖

prism——光譜色圖

jet——飽和值色圖IIflag——紅、白、藍交替色圖shadingfaceted—網格修飾,缺省方式shadingflat——

去掉黑色線條,根據小方塊的值確定顏色shadinginterp——

顏色整體改變,根據小方塊四角的值差補過度點的值確定顏色peaks(30);shadinginterp;colormap(hot)[X,Y,Z]=peaks(30);surfl(X,Y,Z)

shadinginterp;colormap(cool);axisoffpeaks(30);colormap(hot);colorbar('horiz')figure(2);colormap(cool);圖形效果修飾透視與消隱——

用于網線圖裁剪修飾——用于網線圖、曲面圖視角修飾——

觀察不同角度的三維視圖其它修飾:

a.水線修飾

b.等高線修飾透視與消隱p=peaks(30);mesh(p);hiddenonp=peaks(30);mesh(p);hiddenoff裁減修飾p=peaks;p(30:40,20:30)=nan*p(30:40,20:30);surf(p)裁減修飾p=peaks;p(30:40,20:30)=nan*p(30:40,20:30);surf(p)p=peaks;p(30:40,20:30)=nan*p(30:40,20:30);mesh(peaks,p)視角修飾(函數view(az,el))az----方位角;el----俯視角省缺值為:az=-37.5;el=30例:觀察不同視角的波峰圖形z=peaks(40);subplot(2,2,1);mesh(z);subplot(2,2,2);mesh(z);view(-15,6

溫馨提示

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

評論

0/150

提交評論