matlab繪圖


MatLab繪圖

 

作為一個功能強大的工具軟件,Matlab具有很強的圖形處理功能,提供了大量的二維、三維圖形函數。由於系統采用面向對象的技術和豐富的矩陣運算,所以在圖形處理方面方便又高效。

一般來說,一個命令行輸入一條命令,命令行以回車結束。但一個命令行也可以輸入若干條命令,各命令之間以逗號分隔,若前一命令后帶有分號,則逗號可以省略。

如果一個命令行很長,一個物理行之內寫不下,可以在第一個物理行之后加上3個小黑點並按下回車鍵,然后接着下一個物理行繼續寫命令的其他部分。3個小黑點稱為續行符,即把下面的物理行看作該行的邏輯繼續。

二維圖形

一、 plot函數
① 函數格式:plot(x,y)  其中x和y為長度相同
                    坐標向量
     函數功能:以向量x、y為軸,繪制曲線。

【例】 在區間0≤X≤2內,繪制正弦曲線y=sin(x)

其程序為:
x=0:pi/100:2*pi;  %必須加上分號,否則x直接顯示出來啦
y=sin(x); %必須加上分號,否則x直接顯示出來啦
plot(x,y)

【例】在0≤x≤2區間內,繪制曲線                     y=2e-0.5xcos(4πx)

程序如下:
x=0:pi/100:2*pi;
y=2*exp(-0.5*x).*cos(4*pi*x);
plot(x,y)

plot函數最簡單的調用格式是只包含一個輸入參數:
plot(x)
     在這種情況下,當x是實向量時,以該向量元素的下標為橫坐標,元素值為縱坐標畫出一條連續曲線,這實際上是繪制折線圖。

②  含多個輸入參數的plot函數調用格式為: plot(x1,y1,x2,y2,…,xn,yn)

Ⅰ.當輸入參數都為向量時,x1和y1,x2和y2,…,xn和yn分別組成一組向量對,每一組向量對的長度可以不同。每一向量對可以繪制出一條曲線,這樣可以在同一坐標內繪制出多條曲線。
     Ⅱ.當輸入參數有矩陣形式時,配對的x,y按對應列元素為橫、縱坐標分別繪制曲線,曲線條數等於矩陣的列數。

【例】同時繪制正、余弦兩條曲線y1=sin(x)和
              y2=cos(x),其程序為:

x=0:pi/100:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,x,y2)

或者

x=[0:0.5:360]*pi/180;

plot(x,sin(x),x,cos(x))

中間變量繪圖

t=0:0.1:2*pi;
x=t.*sin(3*t); %.*表示點乘,*表示矩陣乘法
y=t.*sin(t).*sin(t);
plot(x,y);

【例】 分析下列程序繪制的曲線。
x1=linspace(0,2*pi,100);
x2=linspace(0,3*pi,100);
x3=linspace(0,4*pi,100);
y1=sin(x1);
y2=1+sin(x2);
y3=2+sin(x3);
x=[x1;x2;x3]';
y=[y1;y2;y3]';
plot(x,y,x1,y1-1)

③  具有兩個縱坐標標度的圖形
           在MATLAB中,如果需要繪制出具有不同縱坐標標度的兩個圖形,可以使用plotyy繪圖函數。調用格式為:
plotyy(x1,y1,x2,y2)
           其中x1,y1對應一條曲線,x2,y2對應另一條曲線。橫坐標的標度相同,縱坐標有兩個,左縱坐標用於x1,y1數據對,右縱坐標用於x2,y2數據對。

【例】用不同標度在同一坐標內繪制曲線       
                y1=0.2e-0.5xcos(4πx) 和
              y2=2e - 0.5xcos(πx)

④  圖形保持
      hold on/off命令控制是保持原有圖形還是刷新原有圖形,不帶參數的hold命令在兩種狀態之間進行切換。
hold on:啟動圖形保持功能,當前坐標軸和圖形都將保持,此后繪制的圖形都將添加在這個圖形之上,並且自動調整坐標軸的范圍。
hold off:關閉圖形保持功能。
hold :在hold on 和hold off命令之間進行切換。

【例】采用圖形保持,在同一坐標內繪制曲線y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。

程序如下:
x=0:pi/100:2*pi;
y1=0.2*exp(-0.5*x).*cos(4*pi*x);
plot(x,y1)
hold on
y2=2*exp(-0.5*x).*cos(pi*x);
plot(x,y2);
hold off

二、設置曲線樣式格式:
        MATLAB提供了一些繪圖選項,用於確定所繪曲線的線型、顏色和數據點標記符號,它們可以組合使用。例如,“b-.”表示藍色點划線,“y:d”表示黃色虛線並用菱形符標記數據點。當選項省略時,MATLAB規定,線型一律用實線,顏色將根據曲線的先后順序依次。

調用格式為:plot(x1,y1,選項1,x2,y2,選項2,…,xn,yn,選項n)
        要設置曲線樣式可以在plot函數中加繪圖選項,其調用格式為:
plot(x,y1,’cs’,...)
其中c表示顏色, s表示線型。

【例】 用不同線型和顏色重新繪制例2圖形,其程序為:
x=0:pi/100:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'go',x,y2,'b-.')
           其中參數'go'和'b-.'表示圖形的顏色和線型。g表示綠色,o表示圖形線型為圓圈;b表示藍色,-.表示圖形線型為點划線。

【例】在同一坐標內,分別用不同線型和顏色繪制曲線y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),標記兩曲線交叉點。
x=linspace(0,2*pi,1000);
y1=0.2*exp(-0.5*x).*cos(4*pi*x);
y2=2*exp(-0.5*x).*cos(pi*x);
k=find(abs(y1-y2)<1e-2);  
                              %查找y1與y2相等點(近似相等)的下標
x1=x(k);               %取y1與y2相等點的x坐標
y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);  
                              %求y1與y2值相等點的y坐標
plot(x,y1,x,y2,'k:',x1,y3,'bp');

三、圖形標記
在繪制圖形的同時,可以對圖形加上一些說明,如圖形名稱、圖形某一部分的含義、坐標說明等,將這些操作稱為添加圖形標記。
title(‘加圖形標題’);當前軸的正上方居
                   中位置處輸出文本作為標題   
xlabel('加X軸標記');    
ylabel('加Y軸標記');      
text(X,Y,'添加文本');

函數中的說明文字,除使用標准的ASCII字符外,還可使用LaTeX格式的控制字符,這樣就可以在圖形上添加希臘字母、數學符號及公式等內容。例如,text(0.3,0.5,‘sin({\omega}t+{\beta})’)將得到標注效果sin(ωt+β)。

x=0:pi/100:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'b*',x,y2,'r>');
title('繪制正弦,余弦函數');
% title(date);
xlabel('橫軸');
ylabel('縱軸');
text(2,1,'正弦曲線');
text(1,0.6,'余弦曲線');

【例】 在坐標范圍0≤X≤2π,-2≤Y≤2內重新繪制正弦曲線,其程序為:
x=linspace(0,2*pi,60);
%生成含有60個數據元素的向量X
y=sin(x);
plot(x,y);
axis ([0 2*pi -2 2]);

四、坐標控制

axis函數的調用格式為:
axis([xmin xmax ymin ymax zmin zmax])
axis函數功能豐富,常用的格式還有:
axis equal:縱、橫坐標軸采用等長刻度。
axis square:產生正方形坐標系(缺省為矩形)。
axis auto:使用缺省設置。
axis off:取消坐標軸。
axis on:顯示坐標軸。

給坐標加網格線用grid命令來控制。grid on/off命令控制是畫還是不畫網格線,不帶參數的grid命令在兩種狀態之間進行切換。
       給坐標加邊框用box命令來控制。box on/off命令控制是加還是不加邊框線,不帶參數的box命令在兩種狀態之間進行切換。

五、加圖例
給圖形加圖例命令為legend。該命令把圖例放置在圖形空白處,用戶還可以通過鼠標移動圖例,將其放到希望的位置。
格式:legend('圖例說明','圖例說明');

【例】 為正弦、余弦曲線增加圖例,其程序為:
x=0:pi/100:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,x,y2, '--');
legend('sin(x)','cos(x)');

六、對函數自適應采樣的繪圖函數
        fplot函數則可自適應地對函數進行采樣,能更好地反應函數的變化規律。
         fplot函數的調用格式為:  
fplot(fname,lims,tol,選項)
        其中fname為函數名,以字符串形式出現,lims為x,y的取值范圍,tol為相對允許誤差,其系統默認值為2e-3。選項定義與plot函數相同。

【例】用fplot函數繪制f(x)=cos(tan(πx))的曲線。

命令如下:
        fplot('cos(tan(pi*x))',[ 0,1],1e-4)
或可先建立函數文件fct.m,其內容為:
function  y=fct(x)
         y=cos(tan(pi*x));
用fplot函數調用fct.m函數,其命令為:
fplot(‘fct’,[0  1])

七.極坐標圖

  polar函數用來繪制極坐標圖,其調用格式為:
polar(theta,rho,選項)
其中theta為極坐標極角,rho為極坐標矢徑,選項的內容與plot函數相似。

例  繪制r=sin(t)cos(t)的極坐標圖,並標記數據點。
程序如下:

1 t=0:pi/50:2*pi;
2 r=sin(t).*cos(t);
3 polar(t,r,'-*');

八. 圖形標記

title(‘加圖形標題');     
xlabel('加X軸標記');    
ylabel('加Y軸標記');      
text(X,Y,'添加文本');
Legend(‘sin(x)’);%加圖例

 

繪制三維螺旋曲線

1 t=0:pi/50:10*pi;
2 x=sin(t),y=cos(t);
3 plot3(x,y,t);
4 title('helix'),text(0,0,0,'origin');
5 xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t');
6 grid on;%加上虛線網格線可以更好的看到對應區間的值

 

九.繪制三維網格圖。函數格式:mesh(x,y,z,c)
其中:x,y控制X和Y軸坐標
       矩陣z是由(x,y)求得Z軸坐標
       (x,y,z)組成三維空間的網格點
       c用於控制網格點顏色

1 %繪制三維網格曲面圖
2 x=[0:0.15:2*pi];
3 y=[0:0.15:2*pi];
4 z=sin(y')*cos(x); %矩陣相乘
5 mesh(x,y,z);

1 %畫出由函數形成的立體網狀圖:
2 x=linspace(-2, 2, 25); % 在x軸上取25點 
3 y=linspace(-2, 2, 25); % 在y軸上取25點 
4 [xx,yy]=meshgrid(x,y); % xx和yy都是21x21的矩陣 
5 zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣 
6 mesh(xx, yy, zz); % 畫出立體網狀圖 

十.surf函數

繪制三維曲面圖,各線條之間的補面用顏色填充。surf函數和mesh函數的調用格式一致。
函數格式: surf (x,y,z)
其中x,y控制X和Y軸坐標,矩陣z是由x,y求得的曲面上Z軸坐標。

1 % 繪制三維曲面圖
2 x=[0:0.15:2*pi];
3 y=[0:0.15:2*pi];
4 z=sin(y')*cos(x); %矩陣相乘
5 surf(x,y,z);

 

復制代碼
1 %剔透玲瓏球
2 [X0,Y0,Z0]=sphere(30);       %產生單位球面的三維坐標
3 X=2*X0;Y=2*Y0;Z=2*Z0;     %產生半徑為2的球面的三維坐標,若加上常數則是圓心
4 surf(X0,Y0,Z0);          %畫單位球面
5 shading interp               %采用插補明暗處理
6 hold on; mesh(X,Y,Z);hold off       %畫外球面
7 hidden off                    %產生透視效果
8 axis off          %不顯示坐標軸
復制代碼

復制代碼
 1 %衛星返回地球的運動軌線示意。
 2 R0=1;            %以地球半徑為一個單位
 3 a=12*R0;b=9*R0;T0=2*pi;       %T0是軌道周期
 4 T=5*T0;dt=pi/100;t=[0:dt:T]';f=sqrt(a^2-b^2);  %地球與另一焦點的距離
 5 th=12.5*pi/180;    %衛星軌道與x-y平面的傾角
 6 E=exp(-t/20);    %軌道收縮率
 7 x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t));z=E.*(b*sin(th)*sin(t));
 8 plot3(x,y,z,'g')    %畫全程軌線
 9 [X,Y,Z]=sphere(30);X=R0*X;Y=R0*Y;Z=R0*Z;  %獲得單位球坐標
10 grid on,hold on,surf(X,Y,Z),shading interp     %畫地球
11 x1=-18*R0;x2=6*R0;y1=-12*R0;y2=12*R0;z1=-6*R0;z2=6*R0;
12 axis([x1 x2 y1 y2 z1 z2])    %確定坐標范圍
13 view([117 37]),comet3(x,y,z,0.02),hold off     %設視角、畫運動軌線  
復制代碼

十一.等高線圖

1 %多峰函數peaks的等高線圖
2 [x,y,z]=peaks(30);%產生一個凹凸有致的曲面,包含了三個局部極大點及三個局部極小點
3 contour3(x,y,z,16);
4 xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
5 title('contour3 of peaks')

十二.動畫設計

復制代碼
1 %動畫功能函數:getframe、moviein和movie
2 %播放一個不斷變化的眼球程序。
3 m=moviein(20); %建立一個20個列向量組成的矩陣
4 for j=1:20
5    plot(fft(eye(j+10))) %繪制出每一幅眼球圖並保存到m矩陣中
6    m(:,j)=getframe;
7 end
8 movie(m,10);%以每秒10幅的速度播放畫面
復制代碼

 

 

作者: 火星十一郎
本文版權歸作者火星十一郎所有,歡迎轉載和商用,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.
分享到: 更多


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM