小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MATLAB函數(shù)畫圖

 絕地戰(zhàn)士 2010-07-25

?作為一個功能強大的工具軟件,Matlab具有很強的圖形處理功能,提供了大量的二維、三維圖形函數(shù)。由于系統(tǒng)采用面向?qū)ο蟮募夹g(shù)和豐富的矩陣運算,所以在圖形處理方面即常方便又高效。

二維圖形

 ?      一、 plot函數(shù)

 ?      函數(shù)格式 plot(x,y)   其中x y 為坐標(biāo)向量

 ?      函數(shù)功能 :以向量x 、y 為軸,繪制曲線。

    ?      【例1 在區(qū)間0X2p內(nèi),繪制正弦曲線Y=SINX),其程序為:

x=0:pi/100:2*pi;

y=sin(x);

plot(x,y)

 

     ?      【例2同時繪制正、余弦兩條曲線Y1=SINX)和Y2=COSX),其程序為:

x=0:pi/100:2*pi;

y1=sin(x);

y2=cos(x);

plot(x,y1,x,y2)

   ?plot函數(shù)還可以為plot(x,y1,x,y2,x,y3,…)形式,其功能是以公共向量x為X軸,分別以y1,y2,y3,…為Y軸,在同一幅圖內(nèi)繪制出多條曲線。

 

?      (一)線型與顏色

?      格式:plot(x,y1,’cs’,...)

?      其中c表示顏色, s表示線型。

 

?(二)圖形標(biāo)記

?在繪制圖形的同時,可以對圖形加上一些說明,如圖形名稱、圖形某一部分的含義、坐標(biāo)說明等,將這些操作稱為添加圖形標(biāo)記。

?title(‘加圖形標(biāo)題');     

?xlabel('X軸標(biāo)記');    

?ylabel('Y軸標(biāo)記');      

?text(X,Y,'添加文本');

 

?(三)設(shè)定坐標(biāo)軸

?用戶若對坐標(biāo)系統(tǒng)不滿意,可利用axis命令對其重新設(shè)定。

?axis([xmin xmax ymin ymax]) 設(shè)定最大和最小值

?axis auto’ 將坐標(biāo)系統(tǒng)返回到自動缺省狀態(tài)

?axis square’   將當(dāng)前圖形設(shè)置為方形

?axis equal’    兩個坐標(biāo)因子設(shè)成相等

?axis off’      關(guān)閉坐標(biāo)系統(tǒng)

?axis on’       顯示坐標(biāo)系統(tǒng)

 

 

?      【例4  在坐標(biāo)范圍0≤X≤2π,-2≤Y≤2內(nèi)重新繪制正弦曲線,其程序為:

x=linspace(0,2*pi,60);生成含有60個數(shù)據(jù)元素的向量X

y=sin(x);

plot(x,y);

axis ([0 2*pi -2 2]);設(shè)定坐標(biāo)軸范圍

 

 

?      (四)加圖例

?      給圖形加圖例命令為legend。該命令把圖例放置在圖形空白處,用戶還可以通過鼠標(biāo)移動圖例,將其放到希望的位置。

?      格式:legend('圖例說明','圖例說明'); 

 

?      (一)subplotm,n,p

?      該命令將當(dāng)前圖形窗口分成m×n個繪圖區(qū),即每行n個,共m行,區(qū)號按行優(yōu)先編號,且選定第p個區(qū)為當(dāng)前活動區(qū)。

 

?      6 在一個圖形窗口中同時繪制正弦、余弦、正切、余切曲線,程序為:

?      x=linspace(0,2*pi,60);

?      y=sin(x);

?      z=cos(x);

?      t=sin(x)./(cos(x)+eps); eps為系統(tǒng)內(nèi)部常數(shù)

?      ct=cos(x)./(sin(x)+eps);

?     subplot(2,2,1); 分成2×2區(qū)域且指定1號為活動區(qū)

?      plot(x,y);

?      title('sin(x)');                

?      axis ([0 2*pi -1 1]);           

?     subplot(2,2,2);

 

 

?(二)多圖形窗口

?需要建立多個圖形窗口,繪制并保持每一個窗口的圖形,可以使用figure命令。

?每執(zhí)行一次figure命令,就創(chuàng)建一個新的圖形窗口,該窗口自動為活動窗口,若需要還可以返回該窗口的識別號碼,稱該號碼為句柄。句柄顯示在圖形窗口的標(biāo)題欄中,即圖形窗口標(biāo)題。用戶可通過句柄激活或關(guān)閉某圖形窗口,而axis、xlabel、title等許多命令也只對活動窗口有效。

 

?    重新繪制上例4個圖形,程序變動后如下:

?      x=linspace(0,2*pi,60);

?      y=sin(x);

?      z=cos(x);

?      t=sin(x)./(cos(x)+eps);  

?      ct=cos(x)./(sin(x)+eps);

?     H1=figure; 創(chuàng)建新窗口并返回句柄到變量H1

?      plot(x,y); 繪制圖形并設(shè)置有關(guān)屬性

?      title('sin(x)');          

?      axis ([0 2*pi -1 1]);    

?     H2=figure; 創(chuàng)建第二個窗口并返回句柄到變量H2

?      plot(x,z); 繪制圖形并設(shè)置有關(guān)屬性

?      title('cos(x)');

 

 

?      (三)hold命令

?      若在已存在圖形窗口中用plot命令繼續(xù)添加新的圖形內(nèi)容,可使用圖形保持命令hold。發(fā)出命令hold on后,再執(zhí)行plot命令,在保持原有圖形或曲線的基礎(chǔ)上,添加新繪制的圖形。

 

?      閱讀如下程序:

?     x=linspace(0,2*pi,60);

?     y=sin(x);

?     z=cos(x);

?     plot(x,y,'b');           繪制正弦曲線

?    hold on;                  設(shè)置圖形保持狀態(tài)

?     plot(x,z,'g');           保持正弦曲線同時繪制余弦曲線

?     axis ([0 2*pi -1 1]);    

?     legend('cos','sin');

?    hold off                  關(guān)閉圖形保持

 

 

?      三、  函數(shù)f(x)曲線

?      fplot函數(shù)則可自適應(yīng)地對函數(shù)進(jìn)行采樣,能更好地反應(yīng)函數(shù)的變化規(guī)律。

?      fplot函數(shù)格式:fplot(fnamelims,tol)

?      其中fname為函數(shù)名,以字符串形式出現(xiàn),lims為變量取值范圍,tol為相對允許誤差,其其系統(tǒng)默認(rèn)值為2e-3。

?      例:fplot(‘sinx,[0  2*pi],’-+’)          

?      fplot(‘[sin(x),cos(x)]’,[0  2*pi],1e-3,’·’)   同時繪制正弦、余弦曲線

 

?      為繪制f(x)=cos(tan(πx))曲線,可先建立函數(shù)文件fct.m,其內(nèi)容為:

function  y=fct(x)

         y=cos(tan(pi*x));

fplot函數(shù)調(diào)用fct.m函數(shù),其命令為:

fplot(‘fct’,[0  1],1e-4)

 

特殊坐標(biāo)圖形

?      一、  對數(shù)坐標(biāo)圖形

?      (一)loglog(x,y) 雙對數(shù)坐標(biāo)

?      【例7  繪制y=|1000sin(4x)|+1的雙對數(shù)坐標(biāo)圖。程序為:

?   x=[0:0.1:2*pi];

?   y=abs(1000*sin(4*x))+1;

?  loglog(x,y); 雙對數(shù)坐標(biāo)繪圖命令

 

?      (二)單對數(shù)坐標(biāo)

?      X軸為對數(shù)重新繪制上述曲線,程序為:

x=[0:0.01:2*pi]

y=abs(1000*sin(4*x))+1

semilogx(x,y); 單對數(shù)X軸繪圖命令

?      同樣,可以以Y軸為對數(shù)重新繪制上述曲線,程序為:

x=[0:0.01:2*pi]

y=abs(1000*sin(4*x))+1

semilogy(x,y); 單對數(shù)Y軸繪圖命令

 

?      二、  極坐標(biāo)圖

函數(shù)polar(theta,rho)用來繪制極坐標(biāo)圖,theta為極坐標(biāo)角度,rho為極坐標(biāo)半徑

?      【例8 繪制sin(2*θ)*cos(2*θ)極坐標(biāo)圖,程序為:

theta=[0:0.01:2*pi];

rho=sin(2*theta).*cos(2*theta);

polar(theta,rho); 繪制極坐標(biāo)圖命令

title('polar plot');

其它圖形函數(shù)

?      plot等基本繪圖命令外,Matlab系統(tǒng)提供了許多其它特殊繪圖函數(shù),這里舉一些代表性例子,更詳細(xì)的信息用戶可隨時查閱在線幫助,其對應(yīng)的M-file文件存放在系統(tǒng)\matlab\toolbox\matlab目錄下。

其它圖形函數(shù)

?      一、階梯圖形

?    函數(shù)stairs(x,y)可以繪制階梯圖形,如下列程序段:

x=[-2.5:0.25:2.5];

y=exp(-x.*x);

stairs(x,y); 繪制階梯圖形命令

title('stairs  plot');

 

其它圖形函數(shù)

?      二、條形圖形

?   函數(shù)bar(x,y)可以繪制條形圖形,如下列程序段將繪制條形圖

x=[-2.5:0.25:2.5];

y=exp(-x.*x);

bar(x,y); 繪制條形圖命令

其它圖形函數(shù)

?      三、填充圖形

?     fill(x,y,’c’)函數(shù)用來繪制并填充二維多邊圖形,xy為二維多邊形頂點坐標(biāo)向量。字符c’ 規(guī)定填充顏色,其取值前已敘述。

?      下述程序段繪制一正方形并以黃色填充:

其它圖形函數(shù)

?    x=[0 1 1 0 0]; 正方形頂點坐標(biāo)向量

?    y=[0 0 1 1 0];

?    fill(x,y,'y');繪制并以黃色填充正方形圖

?      再如:

?    x=[0:0.025:2*pi];

?    y=sin(3*x);

?    fill(x,y,[0.5 0.3 0.4]); 顏色向量

?     Matlab系統(tǒng)可用向量表示顏色,通常稱其為顏色向量?;绢伾蛄坑?/span>[r g b]表示,即RGB顏色組合;以RGB為基本色,通過 r,g,b0~1范圍內(nèi)的不同取值可以組合出各種顏色。

二維繪圖函數(shù)小結(jié)

?     plot         二維圖形基本函數(shù)

?     fplot        f(x)函數(shù)曲線繪制

?     fill         填充二維多邊圖形

?     polar        極坐標(biāo)圖

?     bar          條形圖

?     loglog       雙對數(shù)坐標(biāo)圖

?     semilogx    X軸為對數(shù)的坐標(biāo)圖

?     semilogy    Y軸為對數(shù)的坐標(biāo)圖

?     stairs       階梯形圖

?     axis         設(shè)置坐標(biāo)軸

?     clf       清除圖形窗口內(nèi)容

?     close        關(guān)閉圖形窗口

 

三維圖形

?一、 plot3函數(shù)

?最基本的三維圖形函數(shù)為plot3,它是將二維函數(shù)plot的有關(guān)功能擴展到三維空間,用來繪制三維圖形。

?函數(shù)格式:plot3(x1,y1,z1,c1,x2,y2,z2,c2,…) 

?其中x1,y1,z1表示三維坐標(biāo)向量,c1,c2表示線形或顏色。

?函數(shù)功能:以向量xy,z為坐標(biāo),繪制三維曲線。

 

?      【例9 繪制三維螺旋曲線,其程序為:

?    t=0:pi/50:10*pi;

?    y1=sin(t),y2=cos(t);

?    plot3(y1,y2,t);

?    title('helix'),text(0,0,0,'origin');

?    xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t');

?    grid;

 

?      二、mesh函數(shù)

?     mesh函數(shù)用于繪制三維網(wǎng)格圖。在不需要繪制特別精細(xì)的三維曲面結(jié)構(gòu)圖時,可以通過繪制三維網(wǎng)格圖來表示三維曲面。三維曲面的網(wǎng)格圖最突出的優(yōu)點是:它較好地解決了實驗數(shù)據(jù)在三維空間的可視化問題。

?   函數(shù)格式:mesh(x,y,z,c)

?    其中x,y控制XY軸坐標(biāo),矩陣z是由(x,y)求得Z軸坐標(biāo),(x,y,z)組成了三維空間的網(wǎng)格點;c用于控制網(wǎng)格點顏色。

 

?      三、surf函數(shù)

?    surf用于繪制三維曲面圖,各線條之間的補面用顏色填充。surf函數(shù)和mesh函數(shù)的調(diào)用格式一致。

?   函數(shù)格式: surf (x,y,z)

?    其中x,y控制XY軸坐標(biāo),矩陣z是由xy求得的曲面上Z軸坐標(biāo)。

 

?      四、視點

?      視點位置可由方位角和仰角表示。方位角又稱旋轉(zhuǎn)角為視點位置在XY平面上的投影與X軸形成的角度,正值表示逆時針,負(fù)值表示順時針。仰角又稱視角為XY平面的上仰或下俯角,正值表示視點在XY平面上方,負(fù)值表示視點在XY平面下方。從不同視點繪制三維圖形的函數(shù)為view。

?       view(az,el)中的az為方位角,el為仰角。通過系統(tǒng)提供的多峰函數(shù)peaks的繪制例子,可進(jìn)一步說明視點對圖形的影響,以及view(az,el)函數(shù)的使用。

 

?      【例12  不同視角圖形

?     p=peaks; 系統(tǒng)提供的多峰函數(shù)

?     subplot(2,2,1);

?     mesh(peaks,p);

?    view(-37.5,30); 指定子圖1的視點

?     title('azimuth=-37.5,elevation=30')

?     subplot(2,2,2);

?     mesh(peaks,p);

?    view(-17,60); 指定子圖2的視點

?     title('azimuth=-17,elevation=60')

 

 

?      五、等高線圖

?      等高線圖可通過函數(shù)contour3繪制。

?      【例13 峰函數(shù)peaks等高線圖

?   [x,y,z]=peaks(30);

?   contour3(x,y,z,16);

?     xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');

?   title('contour3 of peaks')

圖形句柄

?一、句柄

?Matlab系統(tǒng)中,繪圖命令產(chǎn)生的每一個部分稱為圖形對象,系統(tǒng)在創(chuàng)建每一個對象時,都為該對象分配唯一的一個值,稱其為句柄,因此句柄就是圖形對象標(biāo)識符。對象、句柄以及圖形對象等概念其實質(zhì)是統(tǒng)一的,系統(tǒng)將每一個對象按樹型層次結(jié)構(gòu)組織起來,這些對象包括根對象,通常為計算機屏幕、圖形窗口、坐標(biāo)系統(tǒng)、線條、曲面、文本串、用戶界面控制等。

 

?根對象可包含一個或多個圖形窗口對象,而一個圖形窗口對象又可包含一組或多組坐標(biāo)系子對象,線條、文本等其它對象都是坐標(biāo)系的子對象。所有創(chuàng)建對象的函數(shù)當(dāng)父對象不存在時,都會自動創(chuàng)建它。

?計算機屏幕作為根對象自動建立,其句柄值為0。而Hf_f=figure命令則建立圖形窗口對象,并返回它的句柄值給變量Hf_f。圖形窗口的句柄為一整數(shù),并顯示在該窗口的標(biāo)題欄,其它圖形對象的句柄為浮點數(shù),Matlab提供了一系列與句柄操作有關(guān)的函數(shù),如gcf 、gca等。為便于識別,用大寫字母開頭的變量表示句柄,如Hf_f等。

 

?      二、對象屬性

?       所有圖形對象都具有控制對象顯示的屬性。這些屬性既包括對象的一般信息,如對象類型、對象的父對象及子對象等,也包括對象的一些特定信息,如坐標(biāo)系對象的刻度等。用戶可以獲取、設(shè)置對象屬性,以達(dá)到控制對象的目的。當(dāng)創(chuàng)建一個對象時,系統(tǒng)用一組默認(rèn)屬性值定制對象,用戶梢醞üget命令獲取這些屬性值,同時也可通過set命令重新設(shè)置對象屬性。

?      set命令格式為:

?     set(H,’name’,value,…)   將圖形對象Hname屬性設(shè)置為value

?      其中H為句柄,name為屬性名,valuename的屬性值。

圖形句柄

?      set命令可以方便地設(shè)置圖形對象屬性,如下列程序段就是通過屬性來定制圖形。

?    x=[0:0.1:4*pi];

?    H=plot(x,sin(x)); 返回正弦曲線句柄H

?    set(H,'LineStyle','*','LineWidth',0.1);設(shè)置正弦曲線線型與線寬

?   其中'LineStyle'為線型屬性,'LineWidth'為線寬屬性。

圖形句柄

?     利用get(H)命令可以返回當(dāng)前句柄H對象的屬性。

?   鍵入命令:get(H) 系統(tǒng)返回當(dāng)前圖形對象的有關(guān)屬性:

?   H=get(0,’CurrentFigure’)則返回根對象的CurrentFigure’的屬性值,即當(dāng)前圖形窗口的句柄,相當(dāng)于函數(shù)gcf。get(gcf,’Children’)則返回當(dāng)前坐標(biāo)系對象的句柄;類似的操作用戶可在使用Matlab的過程中不斷積累。

圖形句柄

?      三、句柄應(yīng)用

?      利用句柄操作的有關(guān)函數(shù),用戶可以查找、訪問圖形對象,以達(dá)到定制對象屬性,改變對象顯示效果的目的。

?      x=-pi:pi/20:pi;

?      y=sin(x);z=cos(x);

?      plot(x,y,'r',x,z,'g');

?      Hl_lines=get(gca,'Children'); 獲取正、余曲線句柄向量Hl_lines

?      for k=1:size(Hl_lines)         

?      if get(Hl_lines(k),‘Color’)==[0 1 0]    [0 1 0]為綠顏色向    Hl_green=Hl_lines(k)         返回綠色線條句柄

?         end

?      end

動畫設(shè)計

?      如果將Matlab產(chǎn)生的多幅圖形保存起來,并利用系統(tǒng)提供的函數(shù)進(jìn)行播放,就可產(chǎn)生動畫效果。系統(tǒng)所提供的動畫功能函數(shù)有getframe、movieinmovie。

 

?      getframe函數(shù)

?      getframe函數(shù)可將當(dāng)前圖形窗口作為一個畫面取下并保存,格式為:m=getframe它將每一幀畫面信息數(shù)據(jù)截取下來整理成列向量。該函數(shù)截取圖形的點陣信息,圖形窗口的大小,對數(shù)據(jù)向量的大小影響較大,窗口越大,所需存儲容量越大。而圖形的復(fù)雜性對數(shù)據(jù)容量要求沒有直接的關(guān)系。

動畫設(shè)計

?      moviein函數(shù)

?      函數(shù)m=moviein(n)用來建立一個足夠大的n列的矩陣m,用來保存n幅畫面的數(shù)據(jù),以備播放。

?      movie函數(shù)

?      movie(m,n)以每秒n幅圖形的速度播放由矩陣m的列向量所組成的畫面。

動畫設(shè)計

?      【例14 播放一個不斷變化的眼球程序段。

?    m=moviein(20); 建立一個20個列向量組成的矩陣

?    for j=1:20

?       plot(fft(eye(j+10))) 繪制出每一幅眼球圖并保存到m矩陣中

?       m(:,j)=getframe;

?    end

?    movie(m,10);以每秒10幅的速度播放畫面

動畫設(shè)計

?    再如下述程序段播放一個直徑不斷變化的球體。

?    n=30

?    [x,y,z]=sphere

?    m=moviein(n);

?    for j=1:n

?       surf(i*x,i*y,i*z)

?       m(:,j)=getframe;

?    end

?    movie(m,30);

 

習(xí)題

?      1.在[0 2π]范圍內(nèi)繪制二維曲線圖

          y=sin(x)*cos(5x)

?      2.在[0  2π]范圍內(nèi)繪制以Y軸為對數(shù)的二維曲線圖, y=|1000sin(4x)|+1

?      3. [6  2]范圍內(nèi)用plotfplot函數(shù)分別繪制二維曲線圖。

?      4.繪制z=sin(x)*cos(y)的三維網(wǎng)格和三維曲面圖,x,y變化范圍均為 [0  2π]。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多