圖形視窗的建立與控制,圖形視窗的基本操作;二維和三維繪圖基本的指令、著色、線型控制‘特殊圖形表現特殊資料的性質;座標軸的控制和圖形標註命令
指令建立:figure
,兩種格式:figure
,figure(n)
選單建立:File-New-Figure
注意:在MATLAB中無法畫出真正的連續函數
- 對離散區間進行更細的劃分,逐步趨近函數的連續變化特性,直到視覺上呈現連續的效果
- 把每兩個離散點用直線連續,以每兩個離散點之間的直線來近似表示兩點間函數特性
plot 是 MATLAB 二維曲線繪圖中最簡單、最重要、使用最廣泛的一個線性繪圖函數。它可以生成線段、曲線和引數方程曲線的函數圖形
指令 | 說明 |
---|---|
plot(y) | 單引數式(y為縱座標向量,橫座標為向量[1 2 3 4 …]) |
plot(x,y) | 引數式 (x 為橫座標向量,y為縱座標向量) |
plot(Y) | m×n 矩陣式(矩陣的每列為縱座標,橫座標為向量[1:m]) |
plot(X,Y) | 混合式 |
plot(Z) | 復向量式 |
plot(x1,y1,x2,y2,…) | 綜合呼叫方式 |
peaks
:MATLAB測試立體繪圖的快捷函數
semilogx
:橫座標為對數座標
semilogy
:縱座標為對數座標
loglog
:橫縱座標均為對數座標
clear all
clc
t=0.1:0.1:3*pi;
y=sin(t)+1;
figure(1) %建立一個新的視窗
semilogx(t,y)
grid on %開啟網格
figure(2)
semilogy(t,y)
figure(3)
loglog(t,y)
繪製左右均有y軸的圖形
plotyy(x1,y1,x2,y2)
:在視窗中同時繪製兩條曲線:(x1,y1)和(x2,y2),曲線(x1,y1)用左側的 y 軸,曲線(x2,y2)用右側的 y 軸
plotyy(x1,y1,x2,y2, 'fun')
:'fun’是字串,用來指定繪圖的函數名,如 plot、semilogx、semilogy 等
plotyy(z1,y1,x2,y2, ‘fun1’, ‘fun2’)
:'fun1’和’fun2’指定不同的繪圖函數分別繪製
注意: plotyy 函數不能加入設定曲線線型、顏色及標出資料點的引數
plot 函數可以設定曲線的線段型別、定點標記和線段顏色
呼叫格式
plot(x,y,s)
:s 為型別說明引數,是字串
- s 字串可以是三種型別的符號之一,也可以是線型與顏色和定點標記與顏色的組合
- 如果沒有 s 引數,plot 將使用預設設定(實線,前七種顏色順序著色)繪製曲線
- 在當前座標系中繪圖時,每呼叫一次繪圖函數,MATLAB將擦掉座標系中已有的圖形物件。可以用
hold on
命令在一個座標系中增加新的圖形物件
注意: MATLAB會根據新圖形的大小,重新改變座標系的比例
clear all
clc
t1=0:0.1:2*pi;
t2=0:0.1:6;
y1=sin(t1);
y2=sqrt(t2);
plot(t1,y1,':hb',t2,y2,'--g')
subplot
:實現在同一個視窗中同時顯示多個影象的命令
subplot(m,n,i)
:把圖形視窗分割為 m 行 n 列子視窗,然後選定第 i 個視窗為當前視窗
- subplot 命令不僅用於二維圖形,對三維圖形一樣適用
- 其本質是將 figure 視窗分為幾個區域,再在每個區域內分別繪圖
clear all
clc
%在第一個子視窗繪圖
subplot(2,2,1)
t=0.1:0.1:2*pi;
y=sin(t);
semilogx(t,y)
grid on
%在第二個子視窗繪圖
subplot(2,2,2)
t=0:0.1:4*pi;
y=sin(t);
plot(t,y)
%在第三個子視窗繪圖
subplot(2,2,3)
x=1:0.01:5; y=exp(x);
plotyy(x,y,x,y,'semilogx','plot')
%在第四個子視窗繪圖
subplot(2,2,4)
x=1:0.1:10; y=sqrt(x);
plot(x,y,':rd')
格式:axis([xmin,xmax,ymin,ymax,zmin,zmax])
座標的最小值( xmin,ymin,zmin)必須小於相應的最大值( xmax,ymax,zmax),否則會出錯
clear all
clc
%第一個圖,未調整座標系
subplot(2,1,1)
t=0:0.1:4*pi;
y=sin(t);
plot(t,y)
%第二個圖,調整座標系
subplot(2,1,2)
t=0:0.1:4*pi;
y=sin(t);
plot(t,y)
axis([0,max(t),min(y),max(y)])
plot3
:用來表現單引數的三維曲線
呼叫格式:
plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…)
或plot3(X,Y,Z,s)
- Xn、Yn、Zn:第一到三維資料,是尺寸相等的向量/矩陣
1.1. X、Y、Z 是向量時,繪製以向量 X、Y、Z 的元素為 x、y、z 座標的三維曲線
1.2.X、Y、Z 是矩陣時,以 X、Y、Z 對應列元素為 x、y、z 座標分別繪製曲線- s、s1、s2:是字串,用來設定線型、顏色、資料點標記
clear all
clc
t = 0:pi/50:10*pi;
st = sin(t);
ct = cos(t);
plot3(st,ct,t)
繪製定義在平面區域 D =[x0,xm]×[y0,yn ]上的三維曲面z=f(x,y)
[x0,xm]在 x 方向分成 m 份,將[y0,yn]在 y 方向分成 n 份,由各劃點分別作平行於座標軸的直線,將區域 D 分成 m×n 個小矩形;對於每個小矩形,計算出網格點的函數值,決定出空間中四個頂點( xi,yi,f(xi,yi)),連線四個頂點得到一個空間的四邊形片;所有四邊形片連在一起構成函數 z=f(x,y)定義在區域 D 上的空間網格曲面
三維曲面繪圖命令可分為平面網格點的生成、在平面網格基礎上繪製三維網格及對三維表面進行處理三個步驟
meshgrid
:生成 x-y 平面上的網格點矩陣( 將由兩個向量決定的區域轉換為對應的網格點矩陣)
生成size(y)*size(x)的矩陣,相當於x從一行重複增加到size(y)行,把y轉置成一列再重複增加到size(x)列
[X,Y]=meshgrid(x,y)
,[X,Y]=meshgrid(x)
/[X,Y]=meshgrid(x,x)
- x:區間[x0,xm]上分劃的向量
- y:區間[y0,yn]上分劃的向量
- X,Y:輸出變數矩陣,矩陣 X 的行向量都是向量 x,矩陣 Y 的列向量都是向量 y
[X,Y] = meshgrid(-2:2:2, -2:2:2)
Z = X.*exp(-X.^2 - Y.^2)
mesh
:生成網格曲面
呼叫格式
格式 | 說明 |
---|---|
mesh(X,Y,Z,C) | X、Y、Z、C 是同維數的矩陣,X、Y、Z 對應空間上的網格點,格線顏色由C決定 |
mesh(X,Y,Z) | 相當於上面的 C=Z 的情況 |
mesh(x,y,Z,C) | x 和 y 是向量,Z 和 C 是同維數的矩陣,網格曲面的網格頂點是( x(j),y(i),Z(i,j)),格線的顏色由矩陣 C 決定 |
mesh(x,y,Z) | 相當於上面的 C=Z 的情況 |
mesh(Z,C) | 等價於 mesh(x,y,Z,C),此時向量x=1:n,向量 y=1:m |
mesh(Z) | 相當於上面的 C=Z 的情況 |
mesh(…,’PropertyName’,PropertyValue,…) | 給函mesh設定曲面屬性 |
clear all
clc
[X,Y] = meshgrid(-2:0.2:2, -2:0.2:2);
Z = X.*exp(-X.^2 - Y.^2);
mesh(Z)
x = -7:0.2:7;
y = -7:0.2:7;
[X,Y] = meshgrid(x);
z = sin(sqrt(X.^2 + Y.^2))./(sqrt(X.^2 + Y.^2));
subplot(2,1,1)
mesh(X,Y,z)
meshc
:除生成網格曲面外,還在 x-y 平面上生成曲面的等高線圖形
meshz
:除生成與 mesh 相同的網格曲面外,還在曲面下面加上一個長方體的臺柱
clear all
clc
[X,Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = X.*exp(-X.^2 - Y.^2);
subplot(2,1,1)
meshc(Z)
subplot(2,1,2)
meshz(Z)
surf
:實現對網格曲面片進行著色,將網格曲面轉化為實曲面(surf 命令的呼叫格式與 mesh 相同)
shading interp
:平滑處理
x = -7:0.2:7;
y = -7:0.2:7;
[X,Y] = meshgrid(x);
z = sin(sqrt(X.^2 + Y.^2))./(sqrt(X.^2 + Y.^2));
subplot(2,2,1)
mesh(X,Y,z)
subplot(2,2,2)
surf(z)
subplot(2,2,3)
surf(z)
shading interp
clear all
clc
x=-20:1:20;
y=-20:1:20;
[X,Y]=meshgrid(x,y);
z=-X.^2-Y.^2+100;
surf(X,Y,z)
counter
:繪製出二維圖形的等高線
contour3
:繪製出三維圖形的等高線
指令 | 說明 |
---|---|
contour(Z) | 直接繪製矩陣 Z 的等高線 |
contour(X,Y,Z) | 用 X 和 Y 指定等高線的 x、y 座標 |
contour(Z,n) contour(X,Y,Z,n) | 繪製 n 條等高線 |
contour(Z,V) contour(X,Y,Z,V) | 向量 V 的元素指定等高線的位置,該向量長度 length(V)對應繪製的等高線條數 |
cylinder
:柱面表示式(柱面的軸線定義為 z 軸,只要給出母線的描述就可完成一個柱面)
呼叫格式:
[X,Y,Z] = cylinder(R,N)
[X,Y,Z] = cylinder(R)
:預設值 N=20[X,Y,Z] = cylinder
:預設值 N=20,R=[1,1]
R:是一描述柱面母線的向量;
N:是旋轉柱面上的分割線條數;
[X,Y,Z] :是返回的x,y,z座標向量
clear all
clc
t=pi:0.01:3*pi;
r=sin(t)+t;
cylinder(r,30)
shading interp %平滑處理
sphere
:球面的表示式
呼叫格式:
[X,Y,Z]=sphere(N)
:產生一個( N+1)×( N+1)的矩陣,然後用函數 surf 命令繪製一個單位的球面,N 為設定分割線的條數[X,Y,Z] = sphere
:預設值 N = 20
bar
、bar3
:直方圖常用於統計資料的作圖(兩指令呼叫格式類似)
呼叫格式:
1.bar(X,Y)
:X 是橫座標向量,Y 可以是向量或矩陣。Y 是向量時,每一個元素對應一個豎條;Y 是 m 行 n 列矩陣時,將畫出 m 組豎條,每組包括 n 個豎條
2.bar(Y)
:橫座標使用預設值 X=1:M
3.bar(X,Y,WIDTH)
、bar(Y,WIDTH)
:用 WIDTH 指定豎條的寬度,如果 WIDTH>1,條與條之間將重合。預設寬度為 0.8
clear all
clc
X=-2:2;
Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];
subplot(1,2,1)
bar(X,Y','r')
xlabel('x')
ylabel('y')
subplot(1,2,2)
bar3(X,Y','y')
zlabel('y')
ylabel('x')
pie
、 pie3
:餅圖又叫扇形圖,用於顯示向量中元素所佔向量元素總和的百分比(兩指令呼叫格式類似)
呼叫格式:
pie(X)
:向量 X 的餅圖。把 X 的每一個元素在所有元素總和中佔的比例表達出來pie(X,Y)
:向量Y(和向量X長度相等)用於指定餅圖中抽出一部分的塊(非零值對應的塊)pie(...,LABELS)
:LABELS 是用於標註餅圖的字串陣列細胞,其長度必須和向量 X相等H = pie(...)
:返回包括餅圖和文字物件控制程式碼
clear all
clc
x=[200,360,120,400,320];
subplot(2,2,1),
pie(x,[0 0 0 1 0])
subplot(2,2,2),
pie3(x,[0 0 0 1 0])
subplot(2,2,3),
pie(x(2:5))
subplot(2,2,4),
x=[0.1,0.12,0.21,0.34,0.11];
pie3(x ,{'A','B','C','D','E'})
polar
:直接在極座標系下繪圖的命令
polar(THETA, RHO,S)
:按照座標的角度theta,半徑rho繪製圖形,S 是字串,用來控制圖形的線型
clear all
clc
rhe=2;
theta=0:pi/20:4*pi;
rho=rhe+theta*rhe;
polar(theta,rho,'r')
legend
:實現不同圖例的說明
呼叫格式:
legend(string1,string2,string3, ...)
、legend(string1,string2,string3,...,’Location’,’Pos’)
:按順序把字串新增到相應的曲線線型符號之後Pos
:NorthEast 圖窗右上角(預設)、NorthWest 圖窗左上角、SouthEast 圖窗右下角、SouthWest 圖窗左下角
clear all
clc
a=rand(10,10);
surf(a)
xlabel('x');
ylabel('y');
zlabel('z');
title('三維曲面')
legend('曲面','location','northwest')
grid on
:開啟分格線控制開關,以後繪製的圖形都帶有分格線
grid off
:關閉分格線控制開關,以後繪製的圖形都不帶分格線
grid
:用於實現分格線繪製切換
text(x,y,'text')
:圖形視窗的(x,y)處寫字串’text’
set(gca,’屬性’,value)
clear all
clc
x = linspace(0,10);
y = sin(4*x);
plot(x,y)
set(gca,'fontsize',16,'fontname','times New Roman');
set(gca,'ylim',[-2,2])
set(gca,'xlim',[1,5])
clear all
clc
t=0:0.1:4*pi;
y=sin(t);
y1=cos(t);
plot(t,y,':',t,y1,'r*')
xlabel('x 軸 (0--4\pi)','fontsize',12,'fontweight','bold')
ylabel('y 軸','fontsize',12,'fontweight','bold')
title('繪製正弦波和餘弦波Pos=1','fontsize',10,'fontweight','bold','fontangle','italic')
text(pi,0,'\leftarrowsin(\pi)=0')
text(pi/2,0.9,['\uparrowsin(\pi/2)=',num2str(sin(pi/2))])
legend('正弦波','餘弦波')