matlab語言程序設計基礎_第1頁
matlab語言程序設計基礎_第2頁
matlab語言程序設計基礎_第3頁
matlab語言程序設計基礎_第4頁
matlab語言程序設計基礎_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章MATLAB語言程序設計基礎第2章MATLAB語言程序設計基礎主要內容MATLAB語言的數據結構MATLAB下矩陣的運算流程控制結構MATLAB函數編寫與技巧MATLAB語言下圖形的繪制與技巧三維圖形的繪制方法MATLAB圖形用戶界面設計技術提高MATLAB程序執(zhí)行效率的技巧

MATLAB的數據結構本節(jié)主要內容數據類型數據輸出格式常量和變量矩陣的matlab表示format:設置輸出格式該命令不影響數據的存儲形式和計算精度對浮點性變量,缺省為formatshort.formatshort,long不影響整型變量的顯示。formatlong顯示15位雙精度formatshort顯示5位formathex十六進制formatbank定點貨幣形式,2個十進制位formatrat分數形式format+

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

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

名描

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

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

=、~=等find()、any()、all()舉例找下標矩陣元素的數據變換取整函數floor(A):按負無窮大方向取整,即不足整數ceil(A):按正無窮大方向取整,即取過剩整數round(A):按最近的整數取整,亦四舍五入fix(A):按離0近的方向取整其他變換函數[n,m]=rat(A):有理數近似mod(A,k)(按floor)、rem(A,k):求余數gcd(n,m)、lcm(n,m):最大公約數、最小公倍數流程控制結構MATLAB語言是一種編程語言,支持各種流程控制結構和C等語言類似,也有不同本節(jié)主要內容循環(huán)結構轉移結構開關結構試探結構循環(huán)結構for結構和while結構循環(huán)結構舉例例1:求兩種結構,后者麻煩for結構while結構例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條件轉移結構重新求解m:s=0;form=1:1000,s=s+m;if(s>10000)break;endendbreak、continue語句continue語句經常與for,while循環(huán)合用。當循環(huán)語句中出現continue時,則不再繼續(xù)執(zhí)行當前循環(huán)體內的程序語句,即提前結束當前循環(huán),并繼續(xù)執(zhí)行下一個循環(huán)。break與continue相似,也是經常與forwhile合用,但它不是繼續(xù)執(zhí)行下一個循環(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

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

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

n=fix(x./y)=-6而對于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概括起來:如果x、y同號,rem和mod結果相同;如果x、y不同號,則rem(x,y)的符號與x相同,

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

格式:

menu('標題','標簽1','標簽2',...)

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

MATLAB語言的腳本文件編程風格注釋部分(1)

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

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

程序中調用的每個用戶自定義函數名稱。輸入部分:放置輸入數據和/或輸入函數,其允許輸入數據。計算部分:放置計算。

輸出部分:放置那些以所需格式傳遞的輸出函數。控制輸入和輸出MATLAB為從用戶獲取輸入以及為格式化輸出(執(zhí)行MATLAB命令而獲得的結果)提供了許多有用的命令。

令說

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

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

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

使用text函數可以根據指定位置和屬性添加文字說明。該函數調用格式為:

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

>>x=0:0.05:7;y=log10(x);plot(x,y)text(2,0.2,'\leftarrowLog(x)','fontsize',20)函數字符代表符號函數字符代表符號函數字符代表符號\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字符的字體設置①\bf:設置字體為粗體字。②\it:設置字體為斜體字。③\sl:設置字體為斜體字,很少使用。④\rm:設置字體為正常字體。⑤\fontname{字體名}:設置字體名。例如:\fontname{宋體}。⑥\fontsize{字體大小}:設置字體大小。例如:\fontsize{16}。>>title('{\itAe}^{-\alpha\itt}sin\beta{\itt}\alpha<<\beta')xlabel('Time\musec.')ylabel('Amplitude')Tex字符的位置有2種設置。①_:表示下標。②^:表示上標。Tex字符的顏色設置①\color{顏色名}顏色名:顏色名有12種,分別為red、green、yellow、magenta、blue、black、white、cyan、gray、barkGreen、orange和lightBlue。例如:\color{magenta}magenta。②\color[rgb]{abc}:設置字體顏色為RGB矩陣[abc]所表示的顏色。a、b和c都在[01]范圍內。例如:color[rgb]{0.5.5}。>>str='黑{\color{red}紅\color{green}綠\color[rgb]{001}藍}黑'text(0.1,0.5,str,'fontsize',24,'fontname','黑體')特殊圖形繪制函數及舉例條形圖: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軸都使用常用對數刻度semilogx():x軸使用常用對數刻度semilogy():y軸使用常用對數刻度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分別表示開始值(10^a)、結束值(10^b)、元素個數(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某質點的位移由x(t)和y(t)確定,試繪制其運動軌跡x(t)=2cos(20mπt)+cos(20nπt)y(t)=2sin(20mπt)+sin(20nπt)m223-3n3-355要求:1.m、n分別取上表中的四個數值2.繪制1秒內的運動軌跡,每隔0.001秒取一個點;3.四種情況的運動軌跡繪制在一個圖形窗口的四個坐標軸中,排成2行2列。隱函數的曲線繪制隱函數繪制函數ezplot()橢圓繪制復雜隱函數參數方程三維圖形的繪制方法1三維曲線的繪制方法三維曲線例,三維曲線MATLAB繪制命令>>t=[0:0.1:10*pi];x=2*t;y=sin(t);z=cos(t);plot3(x,y,z);2二維數據網格:meshgrid()[X,Y]=meshgrid(x,y)由向量x和y生成二維數組X和Y,用來計算二元函數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三維網格圖:mesh()mesh(x,y,z):繪制由數組x,y,z所確定的曲面網格圖x,y可以為數組也可以為向量,但z必須為二維數組[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):繪制由數組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()屬性設置>>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)根據X,Y,Z數組確定網格點(2)用網格線連接在同一行中的網格點(3)用網格線連接在同一列中的網格點(4)用顏色數組C確定網格線(面)的顏色>>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])思路:把四個頂點分成2行2列,將相應的坐標放進X,Y,Z數組即可繪圖。用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])思路:想象下有兩個點,只不過完全重合,這樣就有四個頂點了,可以分成2行2列,將相應的坐標放進X,Y,Z數組即可繪圖。用surf()繪制三角形平面繪制長方體表面圖>>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:保持高、寬比不變,用于三維旋轉時避免圖形大小變化B=repmat(A,m,n)將矩陣A復制m×n塊,即把A作為B的元素,B由m×n個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%緯線數目N=20%經線數目橫截面半徑變化規(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:縱橫坐標采用等長刻度,

且坐標框緊貼數據范圍axisnormal:默認矩形坐標系axissquare:產生正方形坐標系axistight:把數據范圍直接設為坐標范圍MATLAB圖形用戶界面設計技術圖形界面的優(yōu)劣往往決定著軟件的檔次MATLAB的圖形用戶界面(GraphicalUserInterface,GUI)設計技術對設計出良好的通用軟件十分重要本節(jié)主要內容圖形界面設計工具Guide句柄圖形學及句柄對象屬性菜單系統(tǒng)設計界面設計舉例與技巧工具欄設計句柄圖形學簡介句柄圖形學(handlegraphics)的概念,為面向對象的圖形處理提供了十分有用的工具在圖形繪制時,每個圖形元素(比如其坐標軸或圖形上的曲線、文字等)都是一個獨立的對象用戶可以對其中任何一個圖形元素進行單獨地修改,而不影響圖形的其他部分向量化的繪圖。這種向量化的繪圖要求給每個圖形元素分配一個句柄(handle)以后再對該圖形元素做進一步操作時,則只需對該句柄進行操作即可。RooTFigureUIObjectsAxesHiddenAnnotationAxesCoreObjectsPlotObjectsGroupObjectsAnnotationObjectsroot句柄為0figure句柄為正整數其他圖形對象的句柄為浮點數圖形對象是由其屬性來描述的。底層繪圖函數用句柄設置圖形對象的屬性。句柄屬性的設置與修改:get獲得句柄圖形對象的屬性和返回某些對象的句柄值set改變圖形對象的屬性delete(h)刪除句柄為h的圖形對象專用函數:gcf返回當前窗口對象的句柄gca返回當前軸對象的句柄gco返回當前圖形對象的句柄rootroot是關聯計算機屏幕的一個圖形對象,matlab系統(tǒng)中只有一個root,它沒有父對象,子對象是figure。root對象無法刪除的。root的屬性screensize:默認單位為像素,由屏幕的左下角坐標、寬度、高度四個參數確定。以像素為單位,左下角坐標為(1,1)以inches為單位,左下角坐標為(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圖形窗口內部采用歸一化坐標,左下角坐標為(0,0),右上角坐標為(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)圖形界面設計工具Guide在命令窗口給出guide命令可以啟動圖形用戶界面設計程序,得出如下選項建立一個默認的空白界面(BlankGUI)帶有一些控件的界面(GUIwithUicontrols)帶有坐標軸和菜單的界面(GUIwithAxesandMenu)基本模態(tài)對話框(ModalQuestionDialog打開現有的GUI(OpenExistingGUI)Matlab為GUI設計一共準備了4種模板,分別是:BlankGUI(Default)(空白模板,默認);GUIwithUicontrols(帶控件對象的GUI模板);GUIwithAxesandMenu(帶坐標軸與菜單的GUI模板);ModalQuestionDialog(帶模式問題對話框的GUI模板)。按鈕(PushButtons):執(zhí)行某種預定的功能或操作;開關按鈕(ToggleButton):產生一個動作并指示一個二進制狀態(tài)(開或關),當鼠點擊它時按鈕將下陷,并執(zhí)行callback(回調函數)中指定的內容,再次點擊,按鈕復原,并再次執(zhí)行callback中的內容;單選框(RadioButton):單個的單選框用來在兩種狀態(tài)之間切換,多個單選框組成一個單選框組時,用戶只能在一組狀態(tài)中選擇單一的狀態(tài),或稱為單選項;復選框(CheckBox):單個的復選框用來在兩種狀態(tài)之間切換,多個復選框組成一個復選框組時,可使用戶在一組狀態(tài)中作組合式的選擇,或稱為多選項;文本編輯器(EditText):用來使用鍵盤輸入字符串的值,可以對編輯框中的內容進行編輯、刪除和替換等操作;靜態(tài)文本框(StaticText):僅用于顯示單行的說明文字;滾動條(Slider):可輸入指定范圍的數量值;邊框(Frames):在圖形窗口圈出一塊區(qū)域;列表框(ListBox):在其中定義一系列可供選擇的字符串;彈出式菜單(Pop-upMenus):讓用戶從一列菜單項中選擇一項作為參數輸入;此外還有坐標軸(Axes),用于顯示圖形和圖像??丶ο蟮墓矊傩訡hildren取值為空矩陣,因為控件對象沒有自己的子對象;Tag取值為字符串,定義了控件的標識值,在任何程序中都可以通過這個標識值控制該控件對象;Type

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

溫馨提示

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

評論

0/150

提交評論