




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第2章MATLAB基礎
1、MATLAB語言概述
2、MATLAB的基本運算
3、MATLAB繪圖
4、MATLAB的符號處理
5、MATLAB數(shù)據(jù)的輸入輸出6、MATLAB數(shù)據(jù)統(tǒng)計描述和分析1、MATLAB語言概述1.1MATLAB語言的發(fā)展matlab語言是由美國的CleverMoler博士于1980年開發(fā)的MATLAB=
MatrixLaboratory它將一個優(yōu)秀軟件的易用性與可靠性、通用性與專業(yè)性、一般目的的應用與高深的科學技術(shù)應用有機的結(jié)合MATLAB是一種直譯式的高級語言,比其它程序設計語言簡單易用2000年,發(fā)布MATLAB6.0;2002年,發(fā)布MATLAB6.5;2004年,發(fā)布MATLAB7.0;2005年,發(fā)布MATLAB7.1;2006年3月,發(fā)布MATLABR2006a(V7.2);2006年9月,發(fā)布MATLABR2006b(V7.3);2007年3月,發(fā)布MATLABR2007a(V7.4);2007年9月,發(fā)布MATLABR2007b(V7.5);2008年3月,發(fā)布MATLABR2008a(V7.6);2008年9月,發(fā)布MATLABR2086b(V7.7);2009年3月,發(fā)布MATLABR2009a(V7.8);2009年9月,發(fā)布MATLABR2009b(V7.9);2010年3月,發(fā)布MATLABR2010a(V7.10);2010年9月,發(fā)布MATLABR2010b(V7.11);2011年4月,發(fā)布MATLABR2011a(V7.12);2011年9月,發(fā)布MATLABR2011b(V7.13);2012年3月,發(fā)布MATLABR2012a(V7.14);2012年9月,發(fā)布MATLABR2012b(V8.0);2013年3月,發(fā)布MATLABR2013a(V8.1)。MATLABR2017b。1.2matlab在各領域的應用工業(yè)研究與開發(fā)數(shù)學教學,特別是線性代數(shù)數(shù)值分析和科學計算方面的教學與研究電子學、控制理論和物理學等工程和科學經(jīng)濟學、化學和生物學等計算問題的所有其他領域中的教學與研究各種模型的分析與計算MATLAB語言的簡潔高效性MATLAB強大的科學運算功能MATLAB豐富的繪圖功能MATLAB龐大的工具箱與模塊集MATLAB強大的動態(tài)系統(tǒng)仿真功能MATLAB作為線性系統(tǒng)的一種分析和仿真工具,是理工科學生應該掌握的技術(shù)工具,它作為一種編程語言和可視化工具,可解決工程、科學計算和數(shù)學學科中許多問題。1.3MATLAB語言的功能強大的數(shù)值(矩陣)運算廣泛的符號運算功能高級與低級兼?zhèn)涞膱D形功能計算結(jié)果的可視化可靠的容錯功能應用靈活的兼容與接口功能信息量豐富的聯(lián)機檢索功能(1)矩陣運算功能MATLAB提供了豐富的矩陣運算處理功能基于矩陣運算的處理工具。變量
矩陣,運算
矩陣的運算例如C=A+B,A,B,C都是矩陣,是矩陣的加運算一個數(shù),x=5,MATLAB看做是一個11的矩陣(2)符號運算功能符號運算即用字符串進行數(shù)學分析允許變量不賦值而參與運算用于解代數(shù)方程、微積分、復合導數(shù)、積分、二重積分、有理函數(shù)、微分方程、泰樂級數(shù)展開、尋優(yōu)等等,可求得解析符號解(3)豐富的繪圖功能與計算結(jié)果的可視化具有高層繪圖功能——兩維、三維繪圖具有底層繪圖功能——句柄繪圖使用plot函數(shù)可隨時將計算結(jié)果可視化(4)圖形化程序編制功能動態(tài)系統(tǒng)進行建模、仿真和分析的軟件包用結(jié)構(gòu)圖編程,而不用程序編程只需拖幾個方塊、連幾條線,即可實現(xiàn)編程功能(5)豐富的MATLAB工具箱MATLAB主工具箱符號數(shù)學工具箱SIMULINK仿真工具箱控制系統(tǒng)工具箱信號處理工具箱圖象處理工具箱通訊工具箱系統(tǒng)辨識工具箱神經(jīng)元網(wǎng)絡工具箱金融工具箱優(yōu)化工具箱……MATLAB中變量的命名規(guī)則是:(1)變量名必須是不含空格的字符串;(2)變量名以字母開頭,之后可以是任意字母、數(shù)字或下劃線,變量名中不允許使用標點符號.(3)變量名區(qū)分大小寫;(4)變量名最多不超過19個字符;
MATLAB的保留常量eps,pi,NaN,Inf,i,j,i=sqrt(-1)lastwarn,lasterr
1.4MATLAB語言基礎特殊變量表數(shù)值型數(shù)據(jù)結(jié)構(gòu)(1)雙精度數(shù)值變量IEEE標準,64位(8字節(jié)),11指數(shù)位,53數(shù)值位和一個符號位-1.7*10308
至1.7*10308double()函數(shù)的轉(zhuǎn)換(2)其他數(shù)據(jù)類型uint8,常用于圖像表示和處理,8位int8(),int16(),int32(),uint16(),uint32()符號型變量數(shù)據(jù)類型(3)符號型,sym(A),常用于公式推導變量聲明symsABCpositivesym(sin(x))采用變精度函數(shù)求值vpa(A),或vpa(A,n)例求出p
的300位有效數(shù)字
vpa(pi,300)MATLAB支持的其他數(shù)據(jù)結(jié)構(gòu)(4)基本數(shù)值變量類型:雙精度復數(shù)矩陣(5)字符串型數(shù)據(jù):用單引號括起來(6)多維數(shù)組:是矩陣的直接擴展,多個下標(7)單元數(shù)組:將不同類型數(shù)據(jù)集成到一個變量名下面,用{}表示。例。(8)結(jié)構(gòu)體:A.b,引用也用A.b,不是A->b(9)類與對象:可以定義重載函數(shù)返回例:單元(元胞)數(shù)組的創(chuàng)建C_str=char('北京理工大學','管理科學與工程系');R=reshape(1:9,3,3);Cn=[1+2i,1-2i];
S_sym=sym('sin(-3*t)*exp(-t)');%符號函數(shù)量(1)直接創(chuàng)建法之一:“外標識單元元素賦值法”(2)直接創(chuàng)建法之二:“編址單元元素內(nèi)涵的直接賦值法”A(1,1)={C_str};A(1,2)={R};A(2,1)={Cn};A(2,2)={S_sym};A%顯示單元數(shù)組類型B{1,1}=C_str;B{1,2}=R;B{2,1}=Cn;B{2,2}=S_sym;celldisp(B)%顯示單元數(shù)組內(nèi)容結(jié)構(gòu)體示例:通過溫室數(shù)據(jù)(包括溫室名、容積、溫度、濕度等)演示:結(jié)構(gòu)體green_house的創(chuàng)建和顯示。(它有三個域:name,volume,parameter。而parameter又有三個子域:temperature,humidity。)(1)直接對域賦值產(chǎn)生“結(jié)構(gòu)體”,即結(jié)構(gòu)數(shù)組。green_=‘一號房’;結(jié)構(gòu)的域由(結(jié)構(gòu)名).(域名)標識。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)顯示“結(jié)構(gòu)體”結(jié)構(gòu)和內(nèi)容:green_house,……返回MATLAB的基本語句結(jié)構(gòu)
>>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];函數(shù)調(diào)用語句冒號表達式[返回變量列表]=函數(shù)名(輸入變量列表)[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
矩陣全部奇數(shù)行,所有列提取A
矩陣3,2,1行、2,3,4列構(gòu)成子矩陣將A
矩陣左右翻轉(zhuǎn)B3=A(:,end:-1:1)B1=A(1:2:end,:)B2=A([3,2,1],[2,3,4])B=A(v1,v2)2.1創(chuàng)建矩陣2.2矩陣運算2.3多項式運算2.4線性方程組2.5MATLAB語言流程控制2.6數(shù)學函數(shù)2.7.m文件2、MATLAB的基本運算2.1創(chuàng)建矩陣規(guī)則:矩陣元素必須用[]括住矩陣元素必須用逗號或空格分隔
[]內(nèi)矩陣的行與行之間必須用分號分隔矩陣元素任何matlab表達式可以是實數(shù),也可以是復數(shù),復數(shù)可用i,j輸入
a=[123;456]x=[2pi/2;sqrt(3)3+5i]
矩陣的建立逗號或空格作用:分隔某一行的元素。分號作用:區(qū)分不同的行。Enter鍵作用之一:輸入矩陣時,按Enter鍵開始一新行。注意:輸入矩陣時,嚴格要求所有行有相同的列。
例m=[1234;5678;9101112]p=[111122223333]創(chuàng)建簡單的數(shù)組x=[a,b,
c,
d,
e,
f]創(chuàng)建包含指定元素的行向量x=first:last
創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量x=first:increment:last創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=linspace(first,last,n)創(chuàng)建從first開始,到last結(jié)束,有n個元素的行向量x=logspace(first,last,n)創(chuàng)建從10first開始,到10last結(jié)束,n個元素為10.^linspace(first,last,n)的對數(shù)分隔行向量數(shù)組元素的訪問(1)訪問一個元素:x(i)表示訪問數(shù)組x的第i個元素。(2)訪問一塊元素:x(b:s:e)表示訪問數(shù)組x的從第b個元素開始,以步長為s到第e個元素(但不超過e),s可以為負數(shù),s缺省時為1。(3)直接使用元素編址序號:x([ijkl])表示提取數(shù)組x的第i、i、k、l個元素構(gòu)成一個新的數(shù)組[x(i),x(j),x(k),x(l)]。符號的作用逗號和分號的作用逗號和分號可作為指令間的分隔符,matlab允許多條語句在同一行出現(xiàn)。分號如果出現(xiàn)在指令后,屏幕上將不顯示結(jié)果。當一個指令或矩陣太長時,可用”…”續(xù)行冒號的作用用于生成等間隔的向量,默認間隔為1。用于選出矩陣指定行、列及元素。循環(huán)語句用matlab函數(shù)創(chuàng)建矩陣a=[]——空陣[],大小為零,Matlab允許輸入空陣,當一項操作無結(jié)果時,返回空陣。rand——隨機矩陣,b=rand([m,]n)eye——單位矩陣,c=eye(n)zeros——全部元素都為0的矩陣,d=zeros([m,]n)ones——全部元素都為1的矩陣,e=ones(m,n)還有伴隨矩陣、稀疏矩陣、魔方矩陣、對角矩陣、范德蒙等矩陣的創(chuàng)建,就不一一介紹了。注意:matlab嚴格區(qū)分大小寫字母。
matlab函數(shù)名必須小寫。矩陣中元素的操作(1)矩陣A的第r行:A(r,:)(2)矩陣A的第j列:A(:,j)(3)依次提取矩陣A的每一列,將A拉伸為一列向量:
A(:)(4)取矩陣A的第i1~i2行、第j1~j2列構(gòu)成新矩陣:
A(i1:i2,j1:j2)(5)逆序提取矩陣A的第i1~i2行,構(gòu)成新矩陣:
A(i2:-1:i1,:)(6)逆序提取矩陣A的第j1~j2列,構(gòu)成新矩陣:
A(:,j2:-1:j1)(7)刪除A的第i1~i2行,構(gòu)成新矩陣:A(i1:i2,:)=[](8)刪除A的第j1~j2列,構(gòu)成新矩陣:A(:,j1:j2)=[](9)將矩陣A和B拼接成新矩陣:[A,B];[A;B]2.2矩陣運算1)矩陣加、減(+,-)運算規(guī)則:相加、減的兩矩陣必須有相同的行和列;允許參與運算的兩矩陣之一是標量:標量與矩陣的所有元素分別進行加減操作。2)矩陣乘()運算規(guī)則:A矩陣的列數(shù)必須等于B矩陣的行數(shù)標量可與任何矩陣相乘。a=[123;456;780];b=[1;2;3];c=a*bc=143223
3)矩陣乘方——a^n,a^p,p^a
a^p——a自乘p次冪
方陣>1的整數(shù)對于p的其它值,計算將涉及特征值和特征向量如果p是矩陣,a是標量a^p使用特征值和特征向量自乘到p次冪;如a,p都是矩陣,a^p則無意義。當一個方陣有復數(shù)特征值或負實特征值時,非整數(shù)冪是復數(shù)陣。if[V,D]=eig(a),thena^p=V*D.^p/V4)矩陣的其它運算inv——矩陣求逆,inv(A)det——方陣行列式的值,det(A)eig——矩陣的特征值,[V,D]=eig[A]diag——對角矩陣,
'——矩陣轉(zhuǎn)置sqrt——矩陣開方5)借助cat,repmat,reshape等函數(shù)構(gòu)作高維數(shù)組
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:旋轉(zhuǎn);fliplr:左右翻;flipud:上下翻矩陣的抽取
diag:抽取主對角線;tril:抽取主下三角;
triu:抽取主上三角維數(shù)、大小、長度和降維
ndims(A);size(A);length(A);squeeze(A)
7)矩陣的數(shù)組運算
數(shù)組運算指元素對元素的算術(shù)運算,與通常意義上的由符號表示的線性代數(shù)矩陣運算不同數(shù)組加減(.+,.-)(與矩陣加減等效)
a.+b=a+ba.-b=a–b數(shù)組乘除(,./,.\)ab——a,b兩數(shù)組必須有相同的行和列兩數(shù)組對應元素相乘。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數(shù)組乘方(.^)—元素對元素的冪例: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)矩陣的比較運算各種允許的比較關(guān)系
>,>=,<,<=,==,~=,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)數(shù)據(jù)類型轉(zhuǎn)換函數(shù)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)基本數(shù)論運算RemainderGreatestcommondivisorLeastcommonmultiplePrimefactorsRationalfractionapproximation函數(shù)名調(diào)用格式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)例對下面的數(shù)據(jù)進行取整運算
-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187例3×3Hilbert矩陣,試用rat()函數(shù)變換例1856120,1483720,最大公約數(shù)、最小公倍數(shù),質(zhì)因數(shù)分解例1-1000間質(zhì)數(shù)N./DapproximatingAmatlab語言把多項式表達成一個行向量,該向量中的元素是按多項式降冪排列的。
f(x)=anxn+an-1xn-1+……+a0
可用行向量p=[anan-1……a1a0]表示poly——
產(chǎn)生特征多項式系數(shù)向量特征多項式一定是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’)—函數(shù)文件,顯示數(shù)學多項式的形式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)余數(shù)c除a后的整數(shù)多項式微分matlab提供了polyder函數(shù)多項式的微分。命令格式: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代數(shù)方程組求解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)欠定方程組的解當方程數(shù)少于未知量個數(shù)時,即不定情況,有無窮多個解存在。matlab可求出兩個解:用除法求的解x是具有最多零元素的解基于偽逆pinv求得具有最小長度或范數(shù)的解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循環(huán)結(jié)構(gòu)for結(jié)構(gòu)while結(jié)構(gòu)fori=V
循環(huán)結(jié)構(gòu)體endwhile(條件式)
循環(huán)結(jié)構(gòu)體end例用循環(huán)求解例用循環(huán)求解求最小的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條件結(jié)構(gòu)if(條件表達式1)%若條件1滿足,則執(zhí)行語句組1
語句組1%可以嵌套下一層的
if結(jié)構(gòu)elseif(條件表達式2)%若條件2滿足,則執(zhí)行語句組2
語句組2
┆┆%可設置n種轉(zhuǎn)移條件
else%上面n種條件均不滿足,則執(zhí)行語句組n+1
語句組n+1end
s=0;form=1:100000s=s+i;
ifs>10000
break;end;end;2.5.3開關(guān)結(jié)構(gòu)switch(開關(guān)表達式
)case表達式1%若表達式1與開關(guān)表達式一致,則執(zhí)行語句組1
語句組1%可以嵌套下一層的
case結(jié)構(gòu)case{表達式2.1,表達式2.2,…
表達式2-m}
語句組2%若條件2之一滿足表達式
,則執(zhí)行語句組2
┆┆%可設置n種開關(guān)表達式otherwise%上面n種表達式均不滿足,則執(zhí)行語句組n+1
語句組n+1end和C語言的區(qū)別當開關(guān)表達式的值等于某表達式,執(zhí)行該語句后結(jié)束該結(jié)構(gòu),不用break同時滿足若干個條件之一,則用單元形式otherwise語句,不是default程序的執(zhí)行結(jié)果和各個case順序無關(guān)case語句中條件不能重復,否則列在后面的條件將不能執(zhí)行2.5.4試探結(jié)構(gòu)全新結(jié)構(gòu)try,
語句段1,
catch,
語句段2,end2.6數(shù)學函數(shù)函數(shù)是MATLAB編程的主流方法除了函數(shù)外,還可以采用M-script文件M-script適合于小規(guī)模例前例中,若最大值不為10000,需修改程序,如M-script更適合變化的K。
MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某一個函數(shù)的各種性態(tài),需要為MATLAB定義新函數(shù),為此必須編寫函數(shù)文件.函數(shù)文件是文件名后綴為M的文件,這類文件的第一行必須是一特殊字符function開始,格式為:
function因變量名=函數(shù)名(自變量名)函數(shù)值的獲得必須通過具體的運算實現(xiàn),并賦給因變量.
2.7.M文件M文件建立方法:(1)在Matlab中,點:File->New->M-file(2)在編輯窗口中輸入程序內(nèi)容
(3)點:File->Save,存盤,M文件名必須與函數(shù)名一致。Matlab的應用程序也以M文件保存。例:定義函數(shù)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)可以直接使用函數(shù)fun.m例如:計算f(1,2),只需在Matlab命令窗口鍵入命令:x=[12]fun(x)2.7.1MATLAB語言函數(shù)的基本結(jié)構(gòu)
nargin,nargout,varargin,varargoutfunction[返回變量列表]=函數(shù)名(輸入變量列表)
注釋說明段,有%引導
輸入、返回變量格式的檢測
函數(shù)體語句段例對于變化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)例若只給出一個輸入?yún)?shù),則會自動生成一個方陣在函數(shù)中給出合適的幫助信息檢測輸入和返回變量的個數(shù)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)例函數(shù)的遞歸調(diào)用:階乘functionk=my_fact(n)
ifn>1%如果n>1,則進行遞歸調(diào)用
k=n*my_fact(n-1);
elseifany([01]==
n%0!=1!=1
k=1;
endendn!=n*(n-1)!2.7.2可變輸入輸出個數(shù)例可以計算兩個多項式的積用varargin實現(xiàn)任意多個多項式的積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函數(shù)和匿名函數(shù)inline函數(shù),可以免去文件MATLAB7.0之后fun=inline(‘函數(shù)內(nèi)容’,自變量列表)fun=@(自變量列表)函數(shù)內(nèi)容,例如,f=@(x,y)sin(x.^2+y.^2)3、Matlab繪圖——Matlab語言豐富的圖形表現(xiàn)方法,使得數(shù)學計算結(jié)果可以方便地、多樣性地實現(xiàn)了可視化,這是其它語言所不能比擬的。matlab語言的繪圖功能
不僅能繪制幾乎所有的標準圖形,而且其表現(xiàn)形式也是豐富多樣的。
matlab語言不僅具有高層繪圖能力,而且還具有底層繪圖能力——句柄繪圖方法。在面向?qū)ο蟮膱D形設計基礎上,使得用戶可以用來開發(fā)各專業(yè)的專用圖形。3.1二維繪圖3.1.1plot——
最基本的二維圖形指令plot的功能:
plot命令自動打開一個圖形窗口Figure
用直線連接相鄰兩數(shù)據(jù)點來繪制圖形根據(jù)圖形坐標大小自動縮擴坐標軸,將數(shù)據(jù)標尺及單位標注自動加到兩個坐標軸上,可自定坐標軸,可把x,y軸用對數(shù)坐標表示如果已經(jīng)存在一個圖形窗口,plot命令則清除當前圖形,繪制新圖形可單窗口單曲線繪圖;可單窗口多曲線繪圖;可單窗口多曲線分圖繪圖;可多窗口繪圖可任意設定曲線顏色和線型可給圖形加坐標網(wǎng)線和圖形加注功能plot的調(diào)用格式
plot(x)——
缺省自變量繪圖格式,x為向量,以x元素值為縱坐標,以相應元素下標為橫坐標繪圖
plot(x,y)——
基本格式,以y(x)的函數(shù)關(guān)系作出直角坐標圖,如果y為n×m的矩陣,則以x為自變量,作出m條曲線二維圖形繪制基本語句構(gòu)造向量: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’)——
開關(guān)格式,開關(guān)量字符串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——
子圖分割命令調(diào)用格式:
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)——創(chuàng)建窗口函數(shù),n為窗口順序號。x=0:pi/100:2*pi;y=sin(x);y1=sin(x+0.25);y2=sin(x+0.5);plot(x,y)——自動出現(xiàn)第一個窗口figure(2)plot(x,y1)——
在第二窗口繪圖figure(3)plot(x,y2)——在第三窗口繪圖(5)可任意設置顏色與線型例:plot(x,y,'r-',x,y1,'g:',x,y2,'b*')(6)圖形加注功能將標題、坐標軸標記、網(wǎng)格線及文字注釋加注到圖形上,這些函數(shù)為:title('string','PropertyName',PropertyValue,...)
——
給圖形加標題
xlabel('string')
——
給x軸加標注
ylabel('string')
——
給y軸加標注
text(x,y,'string')
——
在圖形指定位置加標注
gtext('string')
——
將標注加到圖形任意位置
gridon(off)
——
打開、關(guān)閉坐標網(wǎng)格線
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)——
顯示和關(guān)閉坐標軸的標記、標志axisauto——
將坐標軸設置返回自動缺省值(7)fplot——
繪制函數(shù)圖函數(shù)fplot的調(diào)用格式:fplot(fun,lims)—
繪制函數(shù)fun在x區(qū)間lims=[xminxmax]的函數(shù)圖。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—符號函數(shù)的簡易繪圖函數(shù)ezplot的調(diào)用格式:ezplot(f)—這里f為包含單個符號變量x的符號表達式,在x軸的默認范圍[-2*pi2*pi]內(nèi)繪制f(x)的函數(shù)圖ezplot(f,xmin,xmax)—給定區(qū)間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隱函數(shù)繪制及應用隱函數(shù):例3.1.2其他二維圖形繪制語句bar––––繪制直方圖compass––––復數(shù)向量圖(羅盤圖)feather––––復數(shù)向量投影圖(羽毛圖)hist––––繪制統(tǒng)計直方圖polar––––繪制極坐標圖stairs––––繪制階梯圖comet––––繪制彗星曲線
errorbar––––繪制誤差棒圖
fill––––繪制二維多邊形圖
loglog––––繪制對數(shù)坐標圖
quiver––––向量場圖
stem––––繪制火柴桿圖area––––區(qū)域圖
rose––––繪制統(tǒng)計扇形圖(玫瑰)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三維繪圖三維繪圖的主要功能:繪制三維線圖繪制等高線圖繪制偽彩色圖繪制三維網(wǎng)線圖繪制三維曲面圖、柱面圖和球面圖繪制三維多面體并填充顏色3.2.1三維線圖plot3——
基本的三維圖形指令調(diào)用格式:plot3(x,y,z)——x,y,z是長度相同的向量plot3(X,Y,Z)——X,Y,Z是維數(shù)相同的矩陣plot3(x,y,z,s)——
帶開關(guān)量plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',…)二維圖形的所有基本特性對三維圖形全都適用。定義三維坐標軸大小
axis([xminxmaxyminymaxzminzmax
])gridon(off)繪制三維網(wǎng)格
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——
三維多邊形的繪制和填色與二維多邊形完全相同調(diào)用格式:
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三維網(wǎng)格圖mesh——
三維網(wǎng)線繪圖函數(shù)調(diào)用格式:
mesh(z)
——
z為n×m的矩陣,x與y
坐標為元素的下標
mesh(x,y,z)——x,y,z分別為三維空間的坐標位置例,矩陣的三維網(wǎng)線圖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矩陣的網(wǎng)線圖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)三維網(wǎng)線圖作圖要領生成坐標——[X,Y]=meshgrid(x,y)表達式點運算——Z=X.^2+Y.^2x——1×n的矩陣y——1×m的矩陣X,Y是n×m的矩陣,維數(shù)可任定X——nY——mZ——默認方位角:37。5o,俯角30o。m×n維meshgrid——
網(wǎng)線坐標值計算函數(shù)
z=f(x,y)—根據(jù)x,y坐標找出z的高度例:繪制z=x2+y2的三維網(wǎng)線圖形
x=-5:5;y=x;[X,Y]=meshgrid(x,y)Z=X.^2+Y.^2
mesh(X,Y,Z)坐標矩陣坐標向量縱坐標矩陣繪圖函數(shù)colormap([R,G,B])——
色圖設定函數(shù)matlab的顏色數(shù)據(jù)集合為紅、綠、藍三顏色矩陣[R,G,B],維數(shù)m×3r,g,b在[01]區(qū)間連續(xù)取值,理論上顏色種類可達無窮多種matlab使用三維向量表示一種顏色,常用顏色數(shù)據(jù)見下表飽和色
[000]—黑色
[001]—蘭色
[010]—綠色
[011]—淺蘭
[100]—紅色
[101]—粉紅
[110]—黃色
[111]—白色調(diào)和色[]—
灰色[0.500]—
暗紅色[10.620.4]—
銅色[0.4910.8]—
淺綠[0.4910.83]—寶石蘭3.2.5三維曲面圖surf——
三維曲面繪圖函數(shù),與網(wǎng)格圖看起來一樣與三維網(wǎng)線圖的區(qū)別:網(wǎng)線圖:線條有顏色,空擋是黑色的(無顏色)曲面圖:線條是黑色的,空擋有顏色(把線條之間的空擋填充顏色,沿z軸按每一網(wǎng)格變化)調(diào)用格式: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)—三維柱面繪圖函數(shù)
r為半徑;n為柱面圓周等分數(shù)例:繪制三維陀螺錐面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
為球面等分數(shù),缺省為20例:繪制三維球面[x,y,z]=sphere(30);surf(x,y,z);3.2.6
圖形修飾方法圖形顏色的修飾matlab有極好的顏色表現(xiàn)功能,其顏色數(shù)據(jù)又構(gòu)成了一維新的數(shù)據(jù)集合,也可稱為四維圖形colormap(MAP)——
色圖設定函數(shù),MAP為m×3維色圖矩陣圖形顏色可根據(jù)需要任意生成,也可用matlab配備的色圖函數(shù)matlab的色圖函數(shù):
hsv——飽和值色圖
gray——線性灰度色圖
hot——暖色色圖
cool——冷色色圖
bone——蘭色調(diào)灰色圖
copper——銅色色圖
pink——粉紅色圖
prism——光譜色圖
jet——飽和值色圖IIflag——紅、白、藍交替色圖shadingfaceted—網(wǎng)格修飾,缺省方式shadingflat——
去掉黑色線條,根據(jù)小方塊的值確定顏色shadinginterp——
顏色整體改變,根據(jù)小方塊四角的值差補過度點的值確定顏色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);圖形效果修飾透視與消隱——
用于網(wǎng)線圖裁剪修飾——用于網(wǎng)線圖、曲面圖視角修飾——
觀察不同角度的三維視圖其它修飾:
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)視角修飾(函數(shù)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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家務服務員2023練習試卷附答案
- 2025年每年中考試題及答案
- 工業(yè)機器人1+x練習試卷附答案
- 2025年自然地理試題及答案
- 2025年期末主題班會標準教案
- 2025年湘江醫(yī)院面試試題及答案
- 2025年旅游大數(shù)據(jù)考試題及答案
- 2025年酒店主管考核試題及答案
- 2025年運營招聘測試題及答案
- 2025年監(jiān)獄囚犯考試試題及答案
- 2025年黑龍江省安全員A證考試題庫附答案
- 2025年公共交通衛(wèi)生提升方案
- 2025屆上海市高三下學期2月聯(lián)考調(diào)研英語試題【含答案解析】
- 發(fā)展我國銀發(fā)經(jīng)濟面臨的挑戰(zhàn)和優(yōu)化路徑研究
- 建(構(gòu))筑物消防員初級技能培訓課件
- 2025年潛江市城市建設發(fā)展集團招聘工作人員【52人】高頻重點提升(共500題)附帶答案詳解
- GA/T 2146-2024法庭科學涉火案件物證檢驗移動實驗室建設通用要求
- DB50T 441-2012 渝菜 毛血旺烹飪技術(shù)規(guī)范
- 2024年05月富德生命人壽保險股份有限公司招考筆試歷年參考題庫附帶答案詳解
- 醫(yī)防融合培訓
- 高速鐵路設計規(guī)范
評論
0/150
提交評論