MATLAB繪制向量圖


對於如何在二維平面中繪制帶箭頭的向量,先給出一個實例:

clear;

clc;

A=[4,5];

B=[-10,0];

C=A+B;

M=[A;B;C];

X=[M(:,1);A(1)];

Y=[M(:,2);A(2)];

plot(X,Y,'r');

axis ([-12 6 -1 6])

grid on;

text(A(1),A(2),'A');%在A點(即[4,5])標注文字’A’

text(B(1)-0.2,B(2)-0.2,'B'); %在B點(即[-10,0])附近標注文字’B’

text(C(1),C(2)+0.2,'C'); %在C點附近標注文字’C’

scale=1;

hold on;

quiver(A(1),A(2),B(1)-A(1),B(2)-A(2),scale);

hold on;

quiver(B(1),B(2),C(1)-B(1),C(2)-B(2),scale);

hold on;

quiver(A(1),A(2),C(1)-A(1),C(2)-A(2),scale);

此例摘自http://zhidao.baidu.com/link?url=vgyvTG1RRebCaOBqE1hn9lCQWAsSJ12V94OdlX6c7A-MyCpyp80OJBEgONuDB01eLOHGIKaVEl3sLdJHfbIk2q

 

上例中重點就是quiver函數了,下面講解一下此函數的用法:

摘自http://wenku.baidu.com/view/e2c2d5b1b9d528ea81c779bb.html

quiver是用來繪制二維方向箭頭圖(quiver3是用來繪制三維方向箭頭圖)。

quiver圖顯示在點(X,Y)處用箭頭顯示對應於分量(U,V)的速度向量。

quiver(x,y,u,v)在指定點繪制速度向量場。參數x,y,u,v為同維向量或矩陣。X,y表示指定點坐標,u,v表示有相應的速度分量

quiver(u,v)繪制在x-y平面上均勻分布的速度向量圖

quiver(u,v,scale)繪制指定擴展箭頭大小的速度向量圖。參數scale為標量,表示擴展箭頭大小比例因子

quiver(u,v,LineSpec)繪制LineSpec指定線條顏色或者線形的速度向量圖,並在向量圖上畫出記號

 

參數LineSpec的取值

顏色y  m  c  r  g  b  w  k

樣式.  o  x  *  +  s  d  ^  v  <  >  p  h

類型-  :  -.  --

 

quiver(u,v, LineSpec ,‘filled’)繪制由參數LineSpec指定線條顏色或者線形的速度向量圖,並對用LineSpec指定的記號進行填充

quiver(x,y,u,v):在每個由X和Y中相應元素對指定的坐標位置處繪制向量,向量以箭頭來表示。矩陣X、Y、U和V必須具有相同階數並且包含相應的位置和速度分量。如果X和Y不是矩陣,MATLAB將擴展X和Y,這個擴展過程等價於調用meshgrid函數並由向量產生矩陣,即[x,y] =meshgrid(x,y); 在這種情況下,下述語句為真:
length(x) = n 且length(y) = m, 其中 [m,n] = size(u) = size(v).
向量X對應於U和V的列,向量Y對應於U和V的行。

 

例1

[X,Y,Z]=peaks(16);

[DX,DY]=gradient(Z, .5,.5);

contour(X,Y,Z,10)

hold on

quiver(X,Y,DX,DY)

hold off

例2

[x,y,z]=peaks(20);%通過peaks函數產生x,y,z矩陣坐標

[Dx,Dy]=gradient(z,0.1,0.1);%對z矩陣坐標求梯度

quiver(x,y,Dx,Dy)%繪制圖形

常見問題1:

用quiver畫出來的圖,最大化保存時總是好大,放在文章里不好看,也占地方,不最大化保存時,因為圖太小,箭頭就看不清楚,有沒有方法將箭頭變大,然后放在小圖里也能看清楚呢?

解決方法:

改變quiver函數中的scale參數就可以了,例如quiver(x,y,2),就變成兩倍。

 

常見問題2:

quiver(x,y ,u ,v)表示在坐標(x,y)處畫出矢量(u,v),但是試了以后發現所畫的矢量和矢量(u,v)並不完全相同,如quiver(0,0,1,1)所畫的箭頭直到(0.9,0.9)處,不是應該到(1,1)處嗎?

問題原因:

這是對於quiver(x,y,u,v,scale),scale的默認值可能是0.9,不是1)。


免責聲明!

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



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