MATLAB學習筆記(五)——MATLAB繪圖

(一)二維數據曲線圖

1、繪製單根二維曲線

一、基本調用格式

plot(x,y)

(1)x,y爲長度相同的向量,分別用於儲存x座標和y座標數據ide

(2)用於繪製以x,y爲橫,縱座標的二維曲線。函數

(3)舉例動畫

image

>> x=linspace(0,2*pi,100);
>> y=2*exp(-5*x).*cos(4*pi*x);
>> plot(x,y)

效果以下:spa

image

       從這裏咱們能夠明白plot繪圖,實際上是取點,而後用光滑的曲線進行鏈接的。能夠說是最差的插值方法吧。3d

二、plot函數最簡單的調用格式

plot(x)

(1)x是實向量時,以該向量元素的下標爲橫座標,元素爲縱座標畫出一條連續曲線,這其實是繪製折線圖。code

(2)x是復向量時,以向量元素的實部和虛部爲橫、縱座標繪製一條曲線。orm

(3)舉個例子blog

>> t=linspace(0,2*pi,100);
>> x=exp(i*t);
>> plot(x)

image

2、繪製多根二維曲線

一、plot函數的輸入參數是矩陣形式

(1)當x是向量,y是有一維與x同維的矩陣時,繪製出多根不一樣顏色的線。ci

>> x=linspace(0,2*pi,100);
>> y=[sin(x);
     1+sin(x)
     2+sin(x)];
>> plot(x,y)

image

(2)當x,y是同維矩陣時,則以x,y對應列元素爲橫、縱座標分別繪製曲線,曲線條數等於列數字符串

>> x1=linspace(0,2*pi,100);
>> x2=linspace(0,3*pi,100);
>> x3=linspace(0,4*pi,100);
>> x=[x1,x2,x3]';

>> y=[sin(x1);1+sin(x2);2+sin(x3)]‘;
>> plot(x,y)

image

(3)對只包含一個輸入參數的plot函數

a、當輸入參數是實矩陣時,則按列繪製每列元素值相對其下標的曲線。

b、當輸入參數是復矩陣時,則以實部、虛部爲橫、縱座標繪製多條曲線。

t=linspace(0,2*pi,100);
x=exp(i*t);
y=[x;2*x;3*x]';
plot(y)

image

二、含多個輸入參數的plot函數

(1)調用格式爲

plot(x1,y1,x2,y2,……,xn,yn)

      能夠在同一座標內畫出3條曲線

(2)當輸入參數有矩陣形式時,配對的x,y按對應的橫縱座標分別繪製曲線,條數仍是等於列數。

三、具備兩個縱座標標度的圖形

(1)調用格式

plotyy(x1,y1,x2,y2)

      其中x1,y1對應一條曲線,而x2和y2對應另一條曲線,而後左邊是第一條曲線的縱座標,右邊是第二條曲線的縱座標。

(2)實例

>> y1=0.2*exp(-0.5*t).*cos(4*pi*t);
>> y2=2*exp(-0.5*t).*cos(pi*t);
>> plotyy(t,y1,t,y2);

image

四、圖形保持

     通常狀況下,每執行一次命令就刷新當前窗口,圖形窗口原有圖形將不復存在。若但願在已存在的圖形上再繼續添加新的圖形,可使用圖形保持命令hold。

hold on保持

hold off取消保持

hold 在二者之間切換

3、設置曲線樣式

image

調用格式爲:

plot(x1,y1,選項1,x2,y2,選項2,……,xn,yn,選項n)

    其中選項的順序好像沒有關係- -,你們能夠試一試

4、圖形標註與座標控制

一、圖形標註

(由於能夠直接加,因此這些命令瞭解一下就行了。。)

image

二、座標控制

(由於也能夠直接調整,因此瞭解一下就好)

(1)調整座標函數

axis([xmin xmax ymin ymax zmin zmax])

image

(2)grid命令

    grid on 畫網格線

    grid off 不畫網格線

    grid      進行切換

5、圖形的可視化編輯

(由於2014有官方中文版,因此就不須要多說了- -)

6、對函數自適應採樣的繪圖函數

     主要是咱們使用plot函數的時候,咱們爲了方便都是取等步長的點,這樣的話,若是遇到疏密不一的曲線就很難描繪出來,因此還有一個函數能夠直接進行適應。

一、調用格式

fplot(fname,lims,tol,選項)

其中:fname爲函數名,以字符串的形式出現。能夠是由多個份量函數構成的行向量,份量函數能夠是函數的直接字符串,也能夠是內部函數名或函數文件名。

        lims爲x,y的取值範圍。能夠取二元向量image,也能夠四元向量image

        tol爲容許的相對偏差

二、實例

>> fplot('cos(tan(pi*x))',[0,1],1e-4)

image

換句話說,咱們在繪製已知表達式的狀況下,使用這用繪製方法是最好的。

7、圖形窗口的分割

       若是咱們須要在一個圖形窗口內繪製若干個獨立的圖形,這就須要對圖形窗口進行分割。分割後的圖形窗口由若干個繪圖區組成,每個繪圖區能夠創建獨立的座標系並繪製圖形。

一、subplot函數的調用格式

subplot(m,n,p)

      做用是將當前圖形窗口分紅m*n個繪圖區,區號是按照行號優先編號,且選定第p個區爲當前互動區。

二、一個demo

x_square=[-3,3,3,-3,-3];
y_square=[3,-3,3,3,-3];
x_circle=3*cos((0:10:360)*pi/180);
y_circle=3*sin((0:10:360)*pi/180);
x_triangle=3*cos([90,210,330,90]*pi/180);
y_triangle=3*sin([90,210,330,90]*pi/180);
subplot(2,2,1);
plot(x_square,y_square,'-r');
axis([-4,4,-4,4]);
axis('equal');
title('square');

subplot(2,2,2);
plot(x_circle,y_circle,'--k');
axis([-4,4,-4,4]);
axis('equal');
title('circle');

subplot(2,2,3);
plot(x_triangle,y_triangle,':b');
axis([-4,4,-4,4]);
axis('equal');
title('triangle');

image

(二)其餘二維圖形

1、其餘座標系下的二位數據曲線圖

一、對數座標圖形

(1)調用格式

semilogx(x1,y1,選項1,x2,y2,選項2……)
semilogy(x1,y1,選項1,x2,y2,選項2……)
loglog(x1,y1,選項1,x2,y2,選項2……)

      第一個函數爲x爲對數座標,y爲線性刻度。

      第二個函數爲y爲對數座標,x爲線性刻度。

      第三個函數x,y都是對數座標。

(2)demo

x=linspace(0,10,100);
y=10*x.*x;
subplot(2,2,1);
plot(x,y);

subplot(2,2,2);
semilogx(x,y);

subplot(2,2,3);
semilogy(x,y);

subplot(2,2,4);
loglog(x,y);

image

二、極座標圖

(1)調用格式

polar(theta,rho,選項)

      其中theat爲極角,rho爲矢徑

(2)demo

>> r=sin(t).*cos(t);
>> polar(t,r)

image

2、二維統計分析圖

條形圖 bar(x,y,選項)
階梯圖 stairs(x,y,選項)
杆圖 stem(x,y,選項)
填充圖 fill(x1,y1,選項1,x2,y2,選項2……)
餅圖 pie([a0,a1,a2,……])

      前三個跟plot相似,而後fill就是將這些點連起來,而後若是最後不是封閉圖形,那麼首尾會自動鏈接起來。

(三)隱函數繪圖

image

(四)三維圖形

1、三維曲線

一、最基本的三維圖形函數plot3

(1)用來繪製三維曲線

(2)格式

plot3(x1,y1,z1,選項1,x2,y2,z2,選項2……)

(3)demo

image

t=0:pi/100:20*pi;
x=sin(t);
y=cos(t);
z=t.*sin(t).*cos(t);
plot3(x,y,z);
gride on;

image

2、三維曲面

一、產生三維數據

      繪製z=f(x,y)所表示的三維全面圖,先要在x,y平面選定一個矩形區域,分紅不少小塊,而後肯定x和y(中心),而後帶入f(x,y),求Z

(1)在MATLAB中產生網格座標矩陣

x=a:d1:b;
y=c:d2:d;
[X,Y]=meshgrid(x,y);

      a、X矩陣的每一行都是向量X,行數等於Y元素的個數

      b、Y矩陣的每一列都是向量Y,列數等於X元素的個數

      c、當x=y的時候,能夠只調用meshgrid(x)

(2)計算Z

      固然通常z是須要用for循環還有條件語句來構造的。

二、繪製三維曲面的函數

(1)調用格式

a、mesh(x,y,z,c):用於繪製三維網格圖,比較粗糙

    meshc(x,y,z,c):會帶有等高線

    meshz(x,y,z,c):會帶有曲線的底座

b、surf(x,y,z,c):用於繪製三維曲面,精細

    ① 其中,x,y,z是同一緯度的矩陣,z=f(x,y),c用於制定在不一樣高度下的顏色範圍,c省略時,默認c=z。 

    ② 而後若是x,y省略的話,z的列下標做爲x軸座標,z的行下標做爲y軸座標。

    ③ 若是X,y是向量,那麼length(x)等於Z的列,length(y)的長度等於Z的行。

(2)一個demo

[x,y]=meshgrid(-8:0.5:8);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);
subplot(2,2,1);
mesh(x,y,z);

subplot(2,2,2);
meshc(x,y,z);

subplot(2,2,3);
meshz(x,y,z);

subplot(2,2,4);
surf(x,y,z);

image

三、標準三維曲面

(1)shpere(n)

a、調用格式

[x,y,z]=sphere(n);

     該函數將產生(n+1)^2的矩陣x,y,z,採用這三個矩陣繪製出圓心位於原點,半徑爲1的單位球體,n決定了球面的圓滑程度

(2)cylinder函數

a、調用格式

[x,y,z]=cylinder(R,n)

     其中R是一個向量,存放柱面各個等間隔高度上的半徑,n表示在圓柱圓周上有n個間隔點。

(3)peak函數

    用來展現三維曲面。z=f(x,y)的函數關係以下

image

    調用格式

z=peaks(n)

(4)一個demo

t=linspace(0,2*pi,40);

[x,y,z]=cylinder(2+sin(t),30);
subplot(2,2,1);
surf(x,y,z);

subplot(2,2,2);
[x,y,z]=sphere;
surf(x,y,z);

subplot(2,1,2);
[x,y,z]=peaks(30);
surf(x,y,z);

image

3、其餘三維圖形

一、繪製統計圖

三維條形圖 bar3(y) y的每個元素對應一個條形
  bar3(x,y) 在x指定的位置上繪製y中元素的條形圖
三維杆圖 stem3(z) 將數據序列z表示爲從xy平面向上延伸的杆圖
  stem3(x,y,z) 在指定位置上畫杆圖
三維餅圖 pie3(x) X爲向量,用於繪製一個三維餅圖
  fill3(x,y,z,c) 使用x,y,z做爲多邊形的頂點,c制定了填充的顏色

一個demo

t=linspace(0,2*pi,40);

subplot(2,2,1);
bar3(magic(4));

subplot(2,2,2);
y=2*sin(0:pi/10:2*pi);
stem3(y);

subplot(2,2,3);
pie3([1000,2000,3000,4000]);

subplot(2,2,4);
fill3(rand(3,5),rand(3,5),rand(3,5),'y');

image

二、瀑布圖

     調用格式

waterfall(X,Y,Z)

image

三、等高線圖

>> contour3(X,Y,Z,1000);

   其中1000表示高度的等級數,越大表示分的越精細

image

(五)圖形修飾處理

1、視點處理

     經過修改視點來看到不一樣角度的形狀。

image

一、函數格式

view(az,el)

      az表示方位角,el表示仰角

二、其實能夠直接在選項中直接轉動= =,因此不哆嗦

2、色彩處理

一、顏色的向量表示。

image

二、色圖

      就是一個m*3的數值矩陣,每一行表示一個RGB三元組。色圖能夠認爲生成,也能夠調用函數

image

       除了plot和其派生函數,其餘函數均使用色圖着色。使用這個函數能夠改變色圖

colormap(m)
       其中m表示色圖矩陣    

三、三維表面圖形的着色

image

一個demo

[x,y,z]=sphere(30);

colormap(copper);

subplot(1,3,1);
surf(x,y,z);
axis equal;

subplot(1,3,2);
surf(x,y,z);
shading flat;
axis equal;

subplot(1,3,3);
surf(x,y,z);
shading interp;
axis equal;

image

3、光照處理

light('color;,選項1,'style',選項2,'position',選項3)

      選項1表示顏色 ,

      選項2:’infinite’表示無窮遠光,’local’表示近光、

      選項3:表示光照來的位置

[x,y,z]=sphere(30);


subplot(1,2,1);
surf(x,y,z);
axis equal;
shading flat;
light('posi',[0,1,1]);


subplot(1,2,2);
surf(x,y,z);
shading flat;
axis equal;
light('posi',[1,0,1]);

image

4、圖形的裁剪處理

image

imageimage

[x,y]=meshgrid(-5:0.1:5);
z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);
surf(x,y,z);
shading interp;
pause;

i=find(x<=0&y<=0);
zi=z;
zi(i)=NaN;
surf(x,y,zi);
shading interp;

(六)圖像處理與動畫製做

image

image

相關文章
相關標籤/搜索