matlab語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
matlab語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
matlab語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
matlab語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
matlab語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第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)介

第2章MATLAB語(yǔ)言程序設(shè)計(jì)基礎(chǔ)第2章MATLAB語(yǔ)言程序設(shè)計(jì)基礎(chǔ)主要內(nèi)容MATLAB語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)MATLAB下矩陣的運(yùn)算流程控制結(jié)構(gòu)MATLAB函數(shù)編寫與技巧MATLAB語(yǔ)言下圖形的繪制與技巧三維圖形的繪制方法MATLAB圖形用戶界面設(shè)計(jì)技術(shù)提高M(jìn)ATLAB程序執(zhí)行效率的技巧

MATLAB的數(shù)據(jù)結(jié)構(gòu)本節(jié)主要內(nèi)容數(shù)據(jù)類型數(shù)據(jù)輸出格式常量和變量矩陣的matlab表示format:設(shè)置輸出格式該命令不影響數(shù)據(jù)的存儲(chǔ)形式和計(jì)算精度對(duì)浮點(diǎn)性變量,缺省為formatshort.formatshort,long不影響整型變量的顯示。formatlong顯示15位雙精度f(wàn)ormatshort顯示5位formathex十六進(jìn)制formatbank定點(diǎn)貨幣形式,2個(gè)十進(jìn)制位formatrat分?jǐn)?shù)形式format+

正、負(fù)formatcompact緊湊式,壓縮空格formatloose寬松式,包括空格和空行數(shù)據(jù)輸出格式第5頁(yè)數(shù)據(jù)類型操作函數(shù)函數(shù)描述double創(chuàng)建或轉(zhuǎn)化為雙精度類型single創(chuàng)建或轉(zhuǎn)化為單精度類型int8,int16,int32,int64創(chuàng)建或轉(zhuǎn)化為相應(yīng)的有符號(hào)整數(shù)類型uint8,uint16,uint32,uint64創(chuàng)建或轉(zhuǎn)化為相應(yīng)的無(wú)符號(hào)整數(shù)類型isnumeric判斷是否為整數(shù)或浮點(diǎn)數(shù),是則返回true(或者1)isinteger判斷是否為整數(shù),是則返回true(或者1)isfloat判斷是否為浮點(diǎn)數(shù),是則返回true(或者1)

常量與變量常量(保留字符串)eps:機(jī)器的浮點(diǎn)運(yùn)算誤差限,默認(rèn)值i和j:虛數(shù)單位,-1的平方根,i=sqrt(-1)Inf:無(wú)窮大量,-Inf為負(fù)無(wú)窮大NaN:不定式(NotaNumber)pi:圓周率p的雙精度浮點(diǎn)表示變量:由字母引導(dǎo),可以跟字母、數(shù)字和下劃線等區(qū)分大小寫系統(tǒng)預(yù)定義的特殊變量

名描

述ans結(jié)果顯示的默認(rèn)變量名beep使計(jì)算機(jī)發(fā)出“嘟嘟”聲pi圓周率eps浮點(diǎn)數(shù)的精度(2.2204e-016),MALTAB中的最小數(shù)inf無(wú)窮大,如當(dāng)除數(shù)為0時(shí)系統(tǒng)返回infNaN或nan表示不定數(shù),即結(jié)果不能確定i或j虛數(shù)單位nargin函數(shù)的輸入?yún)?shù)個(gè)數(shù)nargout函數(shù)的輸出參數(shù)個(gè)數(shù)realmin可用的最小正實(shí)數(shù)2.2251e-308realmax可用的最大正實(shí)數(shù)值1.7977e+308

矩陣的MATLAB表示在MATLAB中創(chuàng)建一個(gè)矩陣可以有兩種常用的方法:一是直接輸入矩陣元素,另一種是調(diào)用矩陣創(chuàng)建函數(shù)。1.輸入元素創(chuàng)建簡(jiǎn)單矩陣對(duì)于簡(jiǎn)單的矩陣,特別是元素?cái)?shù)目不多的矩陣,逐個(gè)輸入矩陣元素是最常用、最便捷的矩陣創(chuàng)建方法,其遵循以下3條原則:運(yùn)用矩陣構(gòu)造符[]包含所創(chuàng)建矩陣的所有元素;使用逗號(hào)“,”或者空格“”分隔矩陣的列;使用分號(hào)“;”或者回車鍵分隔矩陣的行。2.調(diào)用函數(shù)創(chuàng)建特殊矩陣函數(shù)生成矩陣形式ones全1元素矩陣zeros全0元素矩陣eye單位矩陣,即主對(duì)角線元素為1,其余元素全為0rand均勻分布隨機(jī)矩陣randn正態(tài)分布隨機(jī)矩陣magic魔術(shù)矩陣diag對(duì)角矩陣拼接函數(shù)MATLAB的矩陣拼接函數(shù)函數(shù)功能cat指定維拼接horzcat水平方向拼接vertcat垂直方向拼接repmat通過(guò)對(duì)現(xiàn)有矩陣復(fù)制和粘貼操作生成新矩陣blkdiag現(xiàn)有矩陣構(gòu)造對(duì)角矩陣改變矩陣形狀MATLAB矩陣形狀操作函數(shù)函數(shù)功能reshape重新排列矩陣rot90矩陣逆時(shí)針旋轉(zhuǎn)90°fliplr垂直方向?yàn)檩S翻轉(zhuǎn)矩陣flipud水平方向?yàn)檩S翻轉(zhuǎn)矩陣flipdim指定方向?yàn)檩S翻轉(zhuǎn)矩陣MATLAB下矩陣的運(yùn)算本節(jié)主要內(nèi)容矩陣的代數(shù)運(yùn)算矩陣的邏輯運(yùn)算矩陣的比較運(yùn)算矩陣元素的數(shù)據(jù)變換矩陣的代數(shù)運(yùn)算矩陣轉(zhuǎn)置:A’加減乘除:A+B、A-B、A*B、A\B、B/A矩陣翻轉(zhuǎn):flipud(A)、fliplr(A)、rot90(A)矩陣乘方:A^x點(diǎn)運(yùn)算:A.*B、A.^2、A.^A矩陣的邏輯運(yùn)算邏輯型變量的描述邏輯型變量:logical()雙精度表示邏輯變量:非0表示邏輯1邏輯運(yùn)算邏輯“與”:A&B邏輯“或”:A|B邏輯“非”:~A邏輯“異或”:xor(A,B)邏輯運(yùn)算是相應(yīng)元素之間的運(yùn)算矩陣的比較關(guān)系比較關(guān)系關(guān)系>、<、>=、<=、=

=、~=等f(wàn)ind()、any()、all()舉例找下標(biāo)矩陣元素的數(shù)據(jù)變換取整函數(shù)floor(A):按負(fù)無(wú)窮大方向取整,即不足整數(shù)ceil(A):按正無(wú)窮大方向取整,即取過(guò)剩整數(shù)round(A):按最近的整數(shù)取整,亦四舍五入fix(A):按離0近的方向取整其他變換函數(shù)[n,m]=rat(A):有理數(shù)近似mod(A,k)(按floor)、rem(A,k):求余數(shù)gcd(n,m)、lcm(n,m):最大公約數(shù)、最小公倍數(shù)流程控制結(jié)構(gòu)MATLAB語(yǔ)言是一種編程語(yǔ)言,支持各種流程控制結(jié)構(gòu)和C等語(yǔ)言類似,也有不同本節(jié)主要內(nèi)容循環(huán)結(jié)構(gòu)轉(zhuǎn)移結(jié)構(gòu)開(kāi)關(guān)結(jié)構(gòu)試探結(jié)構(gòu)循環(huán)結(jié)構(gòu)for結(jié)構(gòu)和while結(jié)構(gòu)循環(huán)結(jié)構(gòu)舉例例1:求兩種結(jié)構(gòu),后者麻煩for結(jié)構(gòu)while結(jié)構(gòu)例2:求最小的m:s=0;

fori=1:1:100,

s=s+i;

end;

ss=0;

i=0;while(i<100),i=i+1;s=s+i;end,ss=0;m=0;whiles<=10000,m=m+1;s=s+m;end,m,s條件轉(zhuǎn)移結(jié)構(gòu)重新求解m:s=0;form=1:1000,s=s+m;if(s>10000)break;endendbreak、continue語(yǔ)句continue語(yǔ)句經(jīng)常與for,while循環(huán)合用。當(dāng)循環(huán)語(yǔ)句中出現(xiàn)continue時(shí),則不再繼續(xù)執(zhí)行當(dāng)前循環(huán)體內(nèi)的程序語(yǔ)句,即提前結(jié)束當(dāng)前循環(huán),并繼續(xù)執(zhí)行下一個(gè)循環(huán)。break與continue相似,也是經(jīng)常與forwhile合用,但它不是繼續(xù)執(zhí)行下一個(gè)循環(huán),而是退出循環(huán)體,繼續(xù)執(zhí)行循環(huán)體之外的程序。即終止循環(huán)!i=1;forn=2:100ifmod(n,2)==0|mod(n,3)==0|mod(n,5)==0|mod(n,7)==0|mod(n,11)==0

%若能被這些數(shù)整除,則滑過(guò)continueelse%否則(if的條件表達(dá)式無(wú)法執(zhí)行)將n值賦給向量XX(i)=n;i=i+1;endend例如:判斷輸入數(shù)的奇偶性n=input(‘n=’);ifrem(n,2)==0display(‘n是偶數(shù)’)elsedisplay(‘n是奇數(shù)’)endmod(x,y)和rem(x,y)的計(jì)算表達(dá)式都是

x-n.*y但n的定義不同,對(duì)于rem

n=fix(x./y)=-6而對(duì)于mod

n=floor(x./y)=-7所以

rem(-12.2,2)=-12.2-(-6)*2=-0.2

mod(-12.2,2)=-12.2-(-7)*2=1.8概括起來(lái):如果x、y同號(hào),rem和mod結(jié)果相同;如果x、y不同號(hào),則rem(x,y)的符號(hào)與x相同,

mod(x,y)的符號(hào)與y相同。開(kāi)關(guān)結(jié)構(gòu)開(kāi)關(guān)結(jié)構(gòu)執(zhí)行完語(yǔ)句段后將轉(zhuǎn)出開(kāi)關(guān)體當(dāng)需要在開(kāi)關(guān)表達(dá)式滿足若干個(gè)表達(dá)式之一時(shí)執(zhí)行某一程序段,把這些表達(dá)式用大括號(hào)括起來(lái)前面枚舉的各個(gè)表達(dá)式均不滿足時(shí),則將執(zhí)行otherwise語(yǔ)句,不是default輸入選擇參數(shù)ch(1、2、3、4),當(dāng)ch=1時(shí),產(chǎn)生[-10,10]之間均勻分布的隨機(jī)數(shù);當(dāng)ch=2時(shí),產(chǎn)生[-5,5]之間均勻分布的隨機(jī)數(shù);當(dāng)ch=3時(shí),產(chǎn)生[-1,1]之間均勻分布的隨機(jī)數(shù);當(dāng)ch=4時(shí),產(chǎn)生均值為0,方差為1的正態(tài)分布隨機(jī)數(shù)。ch=input('選擇參數(shù)');switchchcase1x=20*rand-10case2x=10*rand-5case3x=2*rand-1case4x=randnend例如:根據(jù)菜單選擇顯示不同的函數(shù)x=menu('波形','正弦','余弦','正切','余切');switchxcase1ezplot('sin')case2ezplot('cos')case3ezplot('tan')case4ezplot('cot')endmenu函數(shù)

格式:

menu('標(biāo)題','標(biāo)簽1','標(biāo)簽2',...)

試探結(jié)構(gòu)試探結(jié)構(gòu)首先試探性地執(zhí)行語(yǔ)句段1,如果出現(xiàn)錯(cuò)誤,則放棄這段語(yǔ)句,轉(zhuǎn)而執(zhí)行語(yǔ)句段2中的語(yǔ)句試探性結(jié)構(gòu)在實(shí)際編程中還是很實(shí)用的可以將一段不保險(xiǎn)但速度快的算法try段落中將一個(gè)保險(xiǎn)但速度極慢的程序放到catch段落中這樣就能保證原始問(wèn)題的求解更加可靠可能使程序高速執(zhí)行。a=magic(4);b=eye(3);tryc=a*bcatchc=a(1:3,1:3)*bendtry嘗試執(zhí)行的語(yǔ)句塊catch出錯(cuò)后執(zhí)行的語(yǔ)句塊endMATLAB函數(shù)編寫與技巧M-腳本文件為什么需要編寫函數(shù)?MATLAB主流的程序設(shè)計(jì)方式封裝變量、封裝程序,形成獨(dú)立的程序本節(jié)主要內(nèi)容MATLAB語(yǔ)言的函數(shù)的基本結(jié)構(gòu)可變輸入、輸出個(gè)數(shù)的處理MATLAB函數(shù)的跟蹤調(diào)試偽代碼與代碼保密處理

MATLAB語(yǔ)言的腳本文件編程風(fēng)格注釋部分(1)

在第一行中放置程序名和任何關(guān)鍵詞。(2)在第二行中放置創(chuàng)建的日期,以及創(chuàng)建者的姓名。(3)

每個(gè)輸入和輸出變量的變量名定義。(4)

程序中調(diào)用的每個(gè)用戶自定義函數(shù)名稱。輸入部分:放置輸入數(shù)據(jù)和/或輸入函數(shù),其允許輸入數(shù)據(jù)。計(jì)算部分:放置計(jì)算。

輸出部分:放置那些以所需格式傳遞的輸出函數(shù)??刂戚斎牒洼敵鯩ATLAB為從用戶獲取輸入以及為格式化輸出(執(zhí)行MATLAB命令而獲得的結(jié)果)提供了許多有用的命令。

令說(shuō)

明disp(A)顯示數(shù)組A的內(nèi)容,而不是數(shù)組的名稱disp(‘text’)顯示單引號(hào)內(nèi)部的文本串fprintf執(zhí)行格式化的寫入到屏幕或者寫入到一個(gè)文件x=input('text')顯示單引號(hào)中的文本,等待用戶的鍵盤輸入,并且將輸入數(shù)據(jù)存儲(chǔ)在x中x=input('text','s')顯示單引號(hào)中的文本,等待用戶的鍵盤輸入,并且將輸入的字符串存儲(chǔ)在x中k=menu('title','option1','option2',...顯示菜單,該菜單的名稱在字符串變量'title'中,并且菜單的選項(xiàng)是'option1'、'option2'等等輸入與輸出用戶輸入input函數(shù)用以在屏幕上顯示文本,等待用戶從鍵盤輸入某些內(nèi)容,然后再將輸入內(nèi)容存儲(chǔ)在指定變量之中。input('提示信息','選項(xiàng)'),用戶輸出

disp函數(shù):用來(lái)顯示表達(dá)式的結(jié)果。disp('hello!')disp(3^4)fprintf函數(shù):將格式化的輸出顯示出來(lái)。fprintf('Thevalueis%d!\n',3^4)%d整數(shù)%f浮點(diǎn)數(shù)%c單個(gè)字符%s字符串\n是換行符fprintf(‘%20.6f’,c)浮點(diǎn)數(shù)20位,小數(shù)點(diǎn)后面有6位腳本文件示例%程序Falling_Speed.m:繪制一個(gè)下落物體的速度圖形。%%輸入變量:%tf=最終時(shí)間(單位為秒)%%輸出變量:%t=計(jì)算速度的時(shí)間數(shù)組(單位為秒)%v=速度數(shù)組(米/秒)%參數(shù)值:g=9.81;%以SI為單位的重力加速度%%輸入部分:tf=input('Enterthefinaltimeinseconds:');%%計(jì)算部分:dt=tf/500;t=[0:dt:tf];%創(chuàng)建一個(gè)有501個(gè)時(shí)間值的數(shù)組。v=g*t;%%輸出部分:plot(t,v),xlabel('Time(seconds)'),ylabel('Speed(meters/second)')

MATLAB語(yǔ)言的函數(shù)的基本結(jié)構(gòu)函數(shù)的結(jié)構(gòu)變?cè)獋€(gè)數(shù):nargin、nargout注釋語(yǔ)句:由%引導(dǎo)聯(lián)機(jī)幫助的編寫變?cè)獧z測(cè)允許函數(shù)有不同的調(diào)用方式functiony=test1(a,b)ifnargin==0a=0;b=0;elseifnargin==1b=0;endy=a+b;endnargin是用來(lái)判斷輸入變量個(gè)數(shù)的函數(shù)nargout是用來(lái)判斷輸出變量個(gè)數(shù)的函數(shù)。nargin和nargout本身都是函數(shù),不是變量,所以不能賦值,也不能顯示。nargin和nargout:functioncalculate_distance(varargin)%求兩點(diǎn)間距離%使用方法:calculate_distance([23]),calculate_distance([23],[45])ifnargin==0disp('未輸入,請(qǐng)至少輸入一點(diǎn)坐標(biāo)值')endifnargin==1x1=varargin{1};d=sum(x1.^2)^0.5;disp('輸入只有一點(diǎn),則求其距原點(diǎn)距離為:')disp(['距離d='num2str(d)])endifnargin==2x1=varargin{1};x2=varargin{2};x=x1-x2;d=sum(x.^2)^0.5;disp('輸入有兩點(diǎn),則求這兩點(diǎn)距離為:')disp(['距離d='num2str(d)])endifnargin>2disp('輸入超過(guò)兩個(gè)點(diǎn),請(qǐng)至多輸入兩點(diǎn)坐標(biāo)值')endendvarargin提供了一種函數(shù)可變參數(shù)列表機(jī)制,用來(lái)存入輸入變量,以元胞數(shù)組形式存儲(chǔ)。varargout可變的數(shù)個(gè)返回值,用來(lái)存入輸出變量,以元胞數(shù)組形式存儲(chǔ)。MATLAB函數(shù)的跟蹤調(diào)試使用MATLAB程序編輯界面medit局部變量值可以由跟蹤調(diào)試程序測(cè)出跟蹤調(diào)試功能設(shè)置斷點(diǎn)單步執(zhí)行函數(shù)跳入下級(jí)函數(shù)單步執(zhí)行取消斷點(diǎn)在斷點(diǎn)處一次執(zhí)行完成取消跟蹤調(diào)試偽代碼與代碼保密處理偽代碼:能保持原*.m函數(shù)的功能,但代碼被變成二進(jìn)制的不可讀代碼為什么需要偽代碼提高執(zhí)行速度代碼保密注意事項(xiàng):自行保留原*.m文件,不可恢復(fù)命令格式pcodemytestpcodemytest–inplacepcode*.mMATLAB語(yǔ)言下圖形的繪制與技巧可以繪制出各種二維曲線可以由數(shù)據(jù)繪圖,也可以由格式繪圖本節(jié)主要內(nèi)容基本二維圖形繪制語(yǔ)句帶有其他選項(xiàng)的繪圖函數(shù)二維曲線的標(biāo)注方法在MATLAB圖形上添加文字標(biāo)注特殊圖形繪制函數(shù)及舉例隱函數(shù)的曲線繪制基本二維圖形繪制語(yǔ)句已知數(shù)據(jù)點(diǎn)(實(shí)驗(yàn)點(diǎn)或計(jì)算點(diǎn))可以容易地繪制出二維“曲線”曲線是折線,不是真正的曲線如果數(shù)據(jù)點(diǎn)足夠密,則繪制的折線看起來(lái)像曲線,另外還可以對(duì)曲線進(jìn)行光滑處理Plot()函數(shù)的擴(kuò)展t是向量,y是矩陣,能同時(shí)繪制多條曲線t,y是同樣維數(shù)的矩陣,能繪制多條曲線多組t,y值繪圖語(yǔ)句選項(xiàng)雙縱坐標(biāo)曲線繪制曲線繪制舉例正弦曲線繪制正弦余弦曲線繪制雙縱坐標(biāo)曲線繪制二維曲線的標(biāo)注方法二維曲線修飾方法坐標(biāo)軸設(shè)置其他設(shè)置text、xlim、ylim函數(shù)x軸上下限設(shè)定xlim([a,b]);y軸上下限設(shè)定ylim([a,b])text(x,y,string)

使用text函數(shù)可以根據(jù)指定位置和屬性添加文字說(shuō)明。該函數(shù)調(diào)用格式為:

text(x,y,z,’說(shuō)明文字’,屬性名1,屬性值1…)其中x,y,z為位置坐標(biāo)。說(shuō)明文字中除使用標(biāo)準(zhǔn)的ASCII字符外,還可使用LaTeX格式的控制字符。

>>x=0:0.05:7;y=log10(x);plot(x,y)text(2,0.2,'\leftarrowLog(x)','fontsize',20)函數(shù)字符代表符號(hào)函數(shù)字符代表符號(hào)函數(shù)字符代表符號(hào)\alphaa\upsilonu\sim~\betab\phif\leq£\gammag\OmegaW\infty¥\deltad\psiY\proptoμ\epsilone\omegaw\diamondsuit¨\pip\GammaG\heartsuit?\etah\DeltaD\spadesuita\thetaq\ThetaQ\leftrightarrow?\rhor\LambdaL\leftarrow?\sigmas\XiX\uparrow\kappak\PiP\rightarrow?\lambdal\SigmaS\downarrowˉ\mum\UpsilonU\circ°\nun\PhiF\pm±\xix\Psiy\geq3使用latexTex字符的字體設(shè)置①\bf:設(shè)置字體為粗體字。②\it:設(shè)置字體為斜體字。③\sl:設(shè)置字體為斜體字,很少使用。④\rm:設(shè)置字體為正常字體。⑤\fontname{字體名}:設(shè)置字體名。例如:\fontname{宋體}。⑥\fontsize{字體大小}:設(shè)置字體大小。例如:\fontsize{16}。>>title('{\itAe}^{-\alpha\itt}sin\beta{\itt}\alpha<<\beta')xlabel('Time\musec.')ylabel('Amplitude')Tex字符的位置有2種設(shè)置。①_:表示下標(biāo)。②^:表示上標(biāo)。Tex字符的顏色設(shè)置①\color{顏色名}顏色名:顏色名有12種,分別為red、green、yellow、magenta、blue、black、white、cyan、gray、barkGreen、orange和lightBlue。例如:\color{magenta}magenta。②\color[rgb]{abc}:設(shè)置字體顏色為RGB矩陣[abc]所表示的顏色。a、b和c都在[01]范圍內(nèi)。例如:color[rgb]{0.5.5}。>>str='黑{\color{red}紅\color{green}綠\color[rgb]{001}藍(lán)}黑'text(0.1,0.5,str,'fontsize',24,'fontname','黑體')特殊圖形繪制函數(shù)及舉例條形圖:t=0:0.2:2*pi;y=cos(t);bar(y)階梯圖:x=0:pi/20:2*pi;y=sin(x);stairs(x,y)彗星圖:t=-pi:pi/500:pi;

y=tan(sin(t))-sin(tan(t));comet(t,y)loglog():x軸、y軸都使用常用對(duì)數(shù)刻度semilogx():x軸使用常用對(duì)數(shù)刻度semilogy():y軸使用常用對(duì)數(shù)刻度x=logspace(-1,2);loglog(x,exp(x),'-s')gridonx=logspace(-1,2);plot(x,exp(x),'-s')gridonx=logspace(-1,2);semilogy(x,exp(x),'-s')gridonx=logspace(-1,2);semilogx(x,exp(x),'-s')gridonlogspace(a,b,n),其中a、b、n分別表示開(kāi)始值(10^a)、結(jié)束值(10^b)、元素個(gè)數(shù)(n)。子窗口分割子窗口分割不同子窗口下繪制不同的曲線>>t=-pi:0.3:pi;y=1./(1+exp(-t));subplot(2,2,1),plot(t,y);title('plot(t,y)')subplot(2,2,2),stem(t,y);title('stem(t,y)')subplot(2,2,[3,4]),stairs(t,y);title('stairs(t,y)')>>m=[2,2,3,-3];n=[3,-3,5,5];t=0:0.001:1;fork=1:4x=2*cos(20*m(k)*pi.*t)+cos(20*n(k)*pi.*t);y=2*sin(20*m(k)*pi.*t)+sin(20*n(k)*pi.*t);subplot(2,2,k)plot(x,y)end某質(zhì)點(diǎn)的位移由x(t)和y(t)確定,試?yán)L制其運(yùn)動(dòng)軌跡x(t)=2cos(20mπt)+cos(20nπt)y(t)=2sin(20mπt)+sin(20nπt)m223-3n3-355要求:1.m、n分別取上表中的四個(gè)數(shù)值2.繪制1秒內(nèi)的運(yùn)動(dòng)軌跡,每隔0.001秒取一個(gè)點(diǎn);3.四種情況的運(yùn)動(dòng)軌跡繪制在一個(gè)圖形窗口的四個(gè)坐標(biāo)軸中,排成2行2列。隱函數(shù)的曲線繪制隱函數(shù)繪制函數(shù)ezplot()橢圓繪制復(fù)雜隱函數(shù)參數(shù)方程三維圖形的繪制方法1三維曲線的繪制方法三維曲線例,三維曲線MATLAB繪制命令>>t=[0:0.1:10*pi];x=2*t;y=sin(t);z=cos(t);plot3(x,y,z);2二維數(shù)據(jù)網(wǎng)格:meshgrid()[X,Y]=meshgrid(x,y)由向量x和y生成二維數(shù)組X和Y,用來(lái)計(jì)算二元函數(shù)f(x,y)的值Z=f(X,Y)。>>x=-4:0.5:4;y=-4:0.5:4;[X,Y]=meshgrid(x,y);Z=sin(sqrt(X.^2+Y.^2));plot3(X,Y,Z)3三維網(wǎng)格圖:mesh()mesh(x,y,z):繪制由數(shù)組x,y,z所確定的曲面網(wǎng)格圖x,y可以為數(shù)組也可以為向量,但z必須為二維數(shù)組[m,n]=size(z),length(x)=n,length(y)=mmeshc(x,y,z):增加等高線。meshz(x,y,z):屏蔽邊界面。>>x=-4:0.2:4;[X,Y]=meshgrid(x);Z=sin(sqrt(X.^2+Y.^2));mesh(X,Y,Z);>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;meshc(X,Y,Z)4三維表面圖:surf()surf(x,y,z):繪制由數(shù)組x,y,z所確定的曲面圖surfc(x,y,z):增加等高線>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;surf(X,Y,Z)mesh()/surf()屬性設(shè)置>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;h=mesh(X,Y,Z,'edgecolor','black')set(h,'facecolor','r')set(h,'linewidth',2)>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;surf(X,Y,Z,'edgecolor','none')5利用surf()繪制一些常用的三維表面圖繪制三維曲面的方法:(1)根據(jù)X,Y,Z數(shù)組確定網(wǎng)格點(diǎn)(2)用網(wǎng)格線連接在同一行中的網(wǎng)格點(diǎn)(3)用網(wǎng)格線連接在同一列中的網(wǎng)格點(diǎn)(4)用顏色數(shù)組C確定網(wǎng)格線(面)的顏色>>A=[1;0;2];B=[3;0;3];C=[1;0;0];D=[3;0;0];P=[A,B;C,D]X=P([1,4],:)Y=P([2,5],:)Z=P([3,6],:);h=surf(X,Y,Z);set(h,'facecolor','b');axis([0,4,-1,1,0,4])思路:把四個(gè)頂點(diǎn)分成2行2列,將相應(yīng)的坐標(biāo)放進(jìn)X,Y,Z數(shù)組即可繪圖。用surf()繪制四邊形平面>>A=[1;0;2];A=[3;0;3];C=[1;0;0];D=[3;0;0];P=[A,A;C,D]X=P([1,4],:)Y=P([2,5],:)Z=P([3,6],:);h=surf(X,Y,Z);set(h,'facecolor','b');axis([0,4,-1,1,0,4])思路:想象下有兩個(gè)點(diǎn),只不過(guò)完全重合,這樣就有四個(gè)頂點(diǎn)了,可以分成2行2列,將相應(yīng)的坐標(biāo)放進(jìn)X,Y,Z數(shù)組即可繪圖。用surf()繪制三角形平面繪制長(zhǎng)方體表面圖>>L=rand(1);W=rand(1);H=rand(1);A=rand(3,1);B=A+[L;0;0];C=B+[0;W;0];D=A+[0;W;0];r1=repmat(A,1,5);r2=[A,B,C,D,A];r3=r2+repmat([0;0;H],1,5);r4=repmat(r3(:,1),1,5);P=[r1;r2;r3;r4];X=P(1:3:end,:);Y=P(2:3:end,:);Z=P(3:3:end,:);surf(X,Y,Z,'facecolor','b','edgecolor','none')axisvis3dholdonx=X(2:3,:);y=Y(2:3,:);z=Z(2:3,:);plot3(x,y,z,'r','linewidth',3)plot3(x',y',z','r','linewidth',3)axisvis3d:保持高、寬比不變,用于三維旋轉(zhuǎn)時(shí)避免圖形大小變化B=repmat(A,m,n)將矩陣A復(fù)制m×n塊,即把A作為B的元素,B由m×n個(gè)A平鋪而成。>>z1=0;z2=5;M=20;N=20;R=5;r=2;t=0:2*pi/N:2*pi;X=[R*cos(t);r*cos(t)];Y=[R*sin(t);r*sin(t)];Z=[z1*ones(size(t));z2*ones(size(t))];t=linspace(0,2*pi,N);s=linspace(0,2*pi,M)';r=(2+sin(s));h=linspace(z1,z2,M)';X=r*cos(t);Y=r*sin(t);Z=h*ones(size(t));surf(X,Y,Z)繪制正棱柱面z1=0%底面所在的平面z2=0%頂面所在的平面M=20%緯線數(shù)目N=20%經(jīng)線數(shù)目橫截面半徑變化規(guī)律:r=2+sinθ0<θ<2πr=(sinθ)/θ0<θ<5π繪制球面>>r=2;M=30;N=30;phi=0:2*pi/M:2*pi;theta=linspace(0,pi,N)';X=r*sin(theta)*cos(phi);Y=r*sin(theta)*sin(phi);Z=r*cos(theta)*ones(size(phi));surf(X,Y,Z)axissquareaxisimage:縱橫坐標(biāo)采用等長(zhǎng)刻度,

且坐標(biāo)框緊貼數(shù)據(jù)范圍axisnormal:默認(rèn)矩形坐標(biāo)系axissquare:產(chǎn)生正方形坐標(biāo)系axistight:把數(shù)據(jù)范圍直接設(shè)為坐標(biāo)范圍MATLAB圖形用戶界面設(shè)計(jì)技術(shù)圖形界面的優(yōu)劣往往決定著軟件的檔次MATLAB的圖形用戶界面(GraphicalUserInterface,GUI)設(shè)計(jì)技術(shù)對(duì)設(shè)計(jì)出良好的通用軟件十分重要本節(jié)主要內(nèi)容圖形界面設(shè)計(jì)工具Guide句柄圖形學(xué)及句柄對(duì)象屬性菜單系統(tǒng)設(shè)計(jì)界面設(shè)計(jì)舉例與技巧工具欄設(shè)計(jì)句柄圖形學(xué)簡(jiǎn)介句柄圖形學(xué)(handlegraphics)的概念,為面向?qū)ο蟮膱D形處理提供了十分有用的工具在圖形繪制時(shí),每個(gè)圖形元素(比如其坐標(biāo)軸或圖形上的曲線、文字等)都是一個(gè)獨(dú)立的對(duì)象用戶可以對(duì)其中任何一個(gè)圖形元素進(jìn)行單獨(dú)地修改,而不影響圖形的其他部分向量化的繪圖。這種向量化的繪圖要求給每個(gè)圖形元素分配一個(gè)句柄(handle)以后再對(duì)該圖形元素做進(jìn)一步操作時(shí),則只需對(duì)該句柄進(jìn)行操作即可。RooTFigureUIObjectsAxesHiddenAnnotationAxesCoreObjectsPlotObjectsGroupObjectsAnnotationObjectsroot句柄為0figure句柄為正整數(shù)其他圖形對(duì)象的句柄為浮點(diǎn)數(shù)圖形對(duì)象是由其屬性來(lái)描述的。底層繪圖函數(shù)用句柄設(shè)置圖形對(duì)象的屬性。句柄屬性的設(shè)置與修改:get獲得句柄圖形對(duì)象的屬性和返回某些對(duì)象的句柄值set改變圖形對(duì)象的屬性delete(h)刪除句柄為h的圖形對(duì)象專用函數(shù):gcf返回當(dāng)前窗口對(duì)象的句柄gca返回當(dāng)前軸對(duì)象的句柄gco返回當(dāng)前圖形對(duì)象的句柄rootroot是關(guān)聯(lián)計(jì)算機(jī)屏幕的一個(gè)圖形對(duì)象,matlab系統(tǒng)中只有一個(gè)root,它沒(méi)有父對(duì)象,子對(duì)象是figure。root對(duì)象無(wú)法刪除的。root的屬性screensize:默認(rèn)單位為像素,由屏幕的左下角坐標(biāo)、寬度、高度四個(gè)參數(shù)確定。以像素為單位,左下角坐標(biāo)為(1,1)以inches為單位,左下角坐標(biāo)為(0,0)ss=get(0,'screensize')figure>>x=0:pi/10:2*pi;ss=get(0,'screensize');W=ss(3);H=ss(4);figure(1)set(gcf,'position',[W/2,H/2,W/3,H/4])set(gcf,'name','sin(x)的圖像','numbertitle','off')plot(x,sin(x))h=figureset(h,'position',[W/2,H/10,W/3,H/4])set(h,'name','cos(x)的圖像','color',[1,1,1])set(1,'toolbar','none','menubar','none')plot(x,cos(x))axis圖形窗口內(nèi)部采用歸一化坐標(biāo),左下角坐標(biāo)為(0,0),右上角坐標(biāo)為(1,1)。x=0:pi/20:2*pi;y=sin(x);plot(x,y)h=get(gca,'title');set(h,'string','abc','color','r','BackgroundColor','g','FontAngle','italic','Fontsize',50)h1=get(gca,'xlabel');set(h1,'string','x','color','b','Fontsize',30)h2=get(gca,'ylabel');set(h2,'string','y','color','k','Fontsize',40)圖形界面設(shè)計(jì)工具Guide在命令窗口給出guide命令可以啟動(dòng)圖形用戶界面設(shè)計(jì)程序,得出如下選項(xiàng)建立一個(gè)默認(rèn)的空白界面(BlankGUI)帶有一些控件的界面(GUIwithUicontrols)帶有坐標(biāo)軸和菜單的界面(GUIwithAxesandMenu)基本模態(tài)對(duì)話框(ModalQuestionDialog打開(kāi)現(xiàn)有的GUI(OpenExistingGUI)Matlab為GUI設(shè)計(jì)一共準(zhǔn)備了4種模板,分別是:BlankGUI(Default)(空白模板,默認(rèn));GUIwithUicontrols(帶控件對(duì)象的GUI模板);GUIwithAxesandMenu(帶坐標(biāo)軸與菜單的GUI模板);ModalQuestionDialog(帶模式問(wèn)題對(duì)話框的GUI模板)。按鈕(PushButtons):執(zhí)行某種預(yù)定的功能或操作;開(kāi)關(guān)按鈕(ToggleButton):產(chǎn)生一個(gè)動(dòng)作并指示一個(gè)二進(jìn)制狀態(tài)(開(kāi)或關(guān)),當(dāng)鼠點(diǎn)擊它時(shí)按鈕將下陷,并執(zhí)行callback(回調(diào)函數(shù))中指定的內(nèi)容,再次點(diǎn)擊,按鈕復(fù)原,并再次執(zhí)行callback中的內(nèi)容;單選框(RadioButton):?jiǎn)蝹€(gè)的單選框用來(lái)在兩種狀態(tài)之間切換,多個(gè)單選框組成一個(gè)單選框組時(shí),用戶只能在一組狀態(tài)中選擇單一的狀態(tài),或稱為單選項(xiàng);復(fù)選框(CheckBox):?jiǎn)蝹€(gè)的復(fù)選框用來(lái)在兩種狀態(tài)之間切換,多個(gè)復(fù)選框組成一個(gè)復(fù)選框組時(shí),可使用戶在一組狀態(tài)中作組合式的選擇,或稱為多選項(xiàng);文本編輯器(EditText):用來(lái)使用鍵盤輸入字符串的值,可以對(duì)編輯框中的內(nèi)容進(jìn)行編輯、刪除和替換等操作;靜態(tài)文本框(StaticText):僅用于顯示單行的說(shuō)明文字;滾動(dòng)條(Slider):可輸入指定范圍的數(shù)量值;邊框(Frames):在圖形窗口圈出一塊區(qū)域;列表框(ListBox):在其中定義一系列可供選擇的字符串;彈出式菜單(Pop-upMenus):讓用戶從一列菜單項(xiàng)中選擇一項(xiàng)作為參數(shù)輸入;此外還有坐標(biāo)軸(Axes),用于顯示圖形和圖像。控件對(duì)象的公共屬性Children取值為空矩陣,因?yàn)榭丶?duì)象沒(méi)有自己的子對(duì)象;Tag取值為字符串,定義了控件的標(biāo)識(shí)值,在任何程序中都可以通過(guò)這個(gè)標(biāo)識(shí)值控制該控件對(duì)象;Type

取值為uicontrol,表明圖形對(duì)象的類型;Visible取值為on或off。UserDate取值為空矩陣,用于保存與該控件對(duì)象相關(guān)的重要數(shù)據(jù)和信息;Parent取值為某個(gè)圖形窗口對(duì)象的句柄,該句柄表明了控件對(duì)象所在的圖形窗口;BackgroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值;缺省值為淺灰色;Callback取值為字符串,可以是某個(gè)M文件名或一小段Matlab語(yǔ)句,當(dāng)用戶激活某個(gè)控件對(duì)象時(shí),應(yīng)用程序就運(yùn)行該屬性定義的子程序;Enable取值為on(缺省值),inactive和off;Extend取值為四元素矢量[0,0,width,height],記錄控件對(duì)象標(biāo)題字符的位置和尺寸;ForegroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值,該屬性定義控件對(duì)象標(biāo)題字符的顏色;缺省值為黑色;Max,Min取值都為數(shù)值,缺省值分別為1和0;String取值為字符串矩陣或塊數(shù)組,定義控件對(duì)象標(biāo)題或選項(xiàng)內(nèi)容;Style取值可以是pushbutton(缺省值),radiobutton,checkbox,edit,text,slider,frame,popupmenu或listbox;Units取值可以是pixels(缺省值),normalized(相對(duì)單位),inches,centimeters(厘米)或points(磅);Value取值可以是矢量,也可以是數(shù)值,其含義及解釋依賴于控件對(duì)象的類型??丶?duì)象的基本控制屬性FontAngle取值為normal(正體,缺省值),italic(斜體),oblique(方頭);FontName取值為控件標(biāo)題等字體的字庫(kù)名;FontSize取值為數(shù)值;FontUnits取值為points(缺省值),normalized,inches,centimeters或pixels;FontWeight取值為normal(缺省值),light,demi和bold,定義字符的粗細(xì);HorizontalAligment取值為left,center(缺省值)或right,定義控件對(duì)象標(biāo)題等的對(duì)齊方式??丶?duì)象的修飾控制屬性ListboxTop取值為數(shù)量值,用于listbox控件對(duì)象;SliderStep取值為兩元素矢量[minstep,maxstep],用于slider控件對(duì)象;Selected取值為on或off(缺省值);SlectionHoghlight取值為on或off(缺省值)??丶?duì)象的輔助屬性BusyAction取值為cancel或queue(缺省值);ButtDownFun取值為字符串,一般為某個(gè)M文件名或一小段Matlab程序;Creatfun取值為字符串,一般為某個(gè)M文件名或一小段Matlab程序;DeletFun取值為字符串,一般為某個(gè)M文件名或一小段Matlab程序;HandleVisibility取值為on(缺省值),callback或off;Interruptible取值為on或off(缺省值)。Callback管理屬性包括圖形用戶界面的設(shè)計(jì)和功能設(shè)計(jì)兩個(gè)方面。GUI程序設(shè)計(jì)例1使用PushButton按鈕與靜態(tài)文本框設(shè)計(jì)GUI,在窗口中顯示單擊按鈕次數(shù)。(1)在界面上安裝一個(gè)命令按鈕和一個(gè)靜態(tài)文本框(2)使用對(duì)象的屬性窗口設(shè)置控件的屬性打開(kāi)該GUI的m文件ex10.m,該文件中已經(jīng)自動(dòng)生成了許多代碼。找到函數(shù)functionpushbutton1_Callback(hObject,eventd

溫馨提示

  • 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)論