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

下載本文檔

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

文檔簡介

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

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

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

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

名描

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

矩陣的MATLAB表示在MATLAB中創(chuàng)建一個矩陣可以有兩種常用的方法:一是直接輸入矩陣元素,另一種是調用矩陣創(chuàng)建函數(shù)。1.輸入元素創(chuàng)建簡單矩陣對于簡單的矩陣,特別是元素數(shù)目不多的矩陣,逐個輸入矩陣元素是最常用、最便捷的矩陣創(chuàng)建方法,其遵循以下3條原則:運用矩陣構造符[]包含所創(chuàng)建矩陣的所有元素;使用逗號“,”或者空格“”分隔矩陣的列;使用分號“;”或者回車鍵分隔矩陣的行。2.調用函數(shù)創(chuàng)建特殊矩陣函數(shù)生成矩陣形式ones全1元素矩陣zeros全0元素矩陣eye單位矩陣,即主對角線元素為1,其余元素全為0rand均勻分布隨機矩陣randn正態(tài)分布隨機矩陣magic魔術矩陣diag對角矩陣拼接函數(shù)MATLAB的矩陣拼接函數(shù)函數(shù)功能cat指定維拼接horzcat水平方向拼接vertcat垂直方向拼接repmat通過對現(xiàn)有矩陣復制和粘貼操作生成新矩陣blkdiag現(xiàn)有矩陣構造對角矩陣改變矩陣形狀MATLAB矩陣形狀操作函數(shù)函數(shù)功能reshape重新排列矩陣rot90矩陣逆時針旋轉90°fliplr垂直方向為軸翻轉矩陣flipud水平方向為軸翻轉矩陣flipdim指定方向為軸翻轉矩陣MATLAB下矩陣的運算本節(jié)主要內容矩陣的代數(shù)運算矩陣的邏輯運算矩陣的比較運算矩陣元素的數(shù)據(jù)變換矩陣的代數(shù)運算矩陣轉置: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()舉例找下標矩陣元素的數(shù)據(jù)變換取整函數(shù)floor(A):按負無窮大方向取整,即不足整數(shù)ceil(A):按正無窮大方向取整,即取過剩整數(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ù)流程控制結構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語句經(jīng)常與for,while循環(huán)合用。當循環(huán)語句中出現(xiàn)continue時,則不再繼續(xù)執(zhí)行當前循環(huán)體內的程序語句,即提前結束當前循環(huán),并繼續(xù)執(zhí)行下一個循環(huán)。break與continue相似,也是經(jīng)常與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

%若能被這些數(shù)整除,則滑過continueelse%否則(if的條件表達式無法執(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)的計算表達式都是

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輸入選擇參數(shù)ch(1、2、3、4),當ch=1時,產生[-10,10]之間均勻分布的隨機數(shù);當ch=2時,產生[-5,5]之間均勻分布的隨機數(shù);當ch=3時,產生[-1,1]之間均勻分布的隨機數(shù);當ch=4時,產生均值為0,方差為1的正態(tài)分布隨機數(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('標題','標簽1','標簽2',...)

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

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

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

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

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

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

令說

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

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

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

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

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)函數(shù)字符代表符號函數(shù)字符代表符號函數(shù)字符代表符號\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','黑體')特殊圖形繪制函數(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軸都使用常用對數(shù)刻度semilogx():x軸使用常用對數(shù)刻度semilogy():y軸使用常用對數(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分別表示開始值(10^a)、結束值(10^b)、元素個數(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某質點的位移由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分別取上表中的四個數(shù)值2.繪制1秒內的運動軌跡,每隔0.001秒取一個點;3.四種情況的運動軌跡繪制在一個圖形窗口的四個坐標軸中,排成2行2列。隱函數(shù)的曲線繪制隱函數(shù)繪制函數(shù)ezplot()橢圓繪制復雜隱函數(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,用來計算二元函數(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()屬性設置>>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)格點(2)用網(wǎng)格線連接在同一行中的網(wǎng)格點(3)用網(wǎng)格線連接在同一列中的網(wǎng)格點(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])思路:把四個頂點分成2行2列,將相應的坐標放進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])思路:想象下有兩個點,只不過完全重合,這樣就有四個頂點了,可以分成2行2列,將相應的坐標放進X,Y,Z數(shù)組即可繪圖。用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%緯線數(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:縱橫坐標采用等長刻度,

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

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

溫馨提示

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

評論

0/150

提交評論