2013年6月6日 星期四
2013年6月5日 星期三
2013年5月3日 星期五
2013年4月10日 星期三
第六週課程----stem()、stairs()、feather()、compass()、errorbar()、plotyy()
5.火柴棒圖stem():
stem()函數命令格式如plot()函數一樣,圖示為長短不同的火柴棒,預設的mark為小圓,也可加入線條規範語法(Line specification syntax)來指定繪圖曲線的樣式。
例如:
>> x=linspace(-6*pi,6*pi,50);
>> y=sin(x)./(x+eps);
>> stem(x,y,'--rx')
6.階梯圖stairs()
stairs()函數為離散資料的圖式,其命令格式也如plot()函數一樣,圖示為高低不一的階梯,也可加入線條規範語法(Line specification syntax)來指定繪圖曲線的樣式。
例如:
>> x=linspace(-6*pi,6*pi,50);
>> y=sin(x)./(x+eps);
>> stairs(x,y,':k')
7.羽毛圖feather()
feather()函數命令格式雖與plot()函數相似,但主要是沿著曲線路徑,繪製出複數的大小與方向的圖示。feather()函數也可加入線條規範語法(Line specification syntax)來指定繪圖曲線的樣式。
例如:
>> omg = linspace(-pi,pi,20);
>> z = exp(-i*omg);
>> feather(z,':g')
也可以使用
>> omg = linspace(-pi,pi,20);
>> z = exp(-i*omg);
>> feather(real(z), imag(z),':g')
8.誤差條狀圖errorbar()
errorbar()函數的命令格式如下:
errorbar(x,y,e)
其中e為誤差條狀圖長度;命令格式也可以是
errorbar(x,y,L,U)
其中L為下方誤差條狀圖長度、U為上方誤差條狀圖長度。errorbar()函數也可加入線條規範語法(Line specification syntax)來指定繪圖曲線的樣式。
例如:
>> omg = linspace(-pi,pi,20);
>> y = sin(omg);
>> e = std(y)*y;
>> errorbar(omg,y,e,'--ro')
9.羅盤圖compass()
compass()函數與feather()函數相似,但是以原點輻射出去。compass()函數也可加入線條規範語法(Line specification syntax)來指定繪圖曲線的樣式。
例如:
>> omg = linspace(-pi,pi,20);
>> z = exp(-i*omg);
>> compass(z,':c')
10.雙y軸函數 plotyy()
當大小差異很大的資料要顯示在同一繪圖區時,可以使用雙y軸函數plotyy(),避免過小的數據資料的細節狀況被忽略。
plotyy()函數的命令格式如下:
plotyy(x,y1,x,y2,f1,f2)
其中f1與f2為繪圖方法,繪圖方法可以使用函數握把(Function handle)(ex: @plot)也能使用字串描述(ex: 'semilogy')。plotyy()函數不可使用線條規範語法(Line specification syntax)。
例如:
>> x = linspace(0,5,100);
>> y1 = cos(5*x)+nthroot(x,3);
>> y2 = exp(x.^2);
>> figure, plot(x,y1,'r',x,y2,'b')
改用雙y軸函數plotyy()
>> x = linspace(0,5,100);
>> y1 = cos(5*x)+nthroot(x,3);
>> y2 = exp(x.^2);
>> figure, plotyy(x,y1,x,y2,'plot',@semilogy)
2013年4月9日 星期二
第六週課程----填色函數fill()
第六週課程----累加圖形area()
若累加圖形函數格式為area(x, y),其中x為x軸座標向量、y為y軸座標向量,此時與plot(x, y)函數很像,主要差異是area()函數會將x軸與函數曲線之間填滿顏色。
例如:
>> x = linspace(0, 2*pi);
>> figure, area(x, sin(x))
除了與plot(x, y)函數很像以外,area()函數還可以繪出多資料的累加圖形。
例如:
>> x = 0:10; subplot(2,1,1), plot(x,cos(x))
>> hold on, plot(x,cos(x)+sqrt(x),'r')
>> plot(x,cos(x)+sqrt(x)+x.^(3/2),'g'), hold off
>> Y = [cos(x); sqrt(x); x.^(3/2)]';
>> subplot(2,1,2), area(x,Y)
兩個圖形相同,差異只是在x軸、曲線與曲線之間填滿顏色而已。
此外 ,所填滿顏色的色系可以用colormap()函數來改變。
色系包括:
spring(n)----春天色系
summer(n)----夏天色系
autumn(n)----秋天色系
winter(n)----冬天色系
hot(n)----暖色系
cool(n)----冷色系
hsv(n)----由紅、橙、黃、綠、青、藍、紫,到飽和紅色所組成的色系
jet(n)----MATLAB預設色系,由暗藍、藍、青、黃、橙、紅、暗紅色所組成的色系
colorcube(n)----增強式色系
lines(n)----線性色系
copper(n)----線性銅色調色系
pink(n)----粉色系
flag(n)----由紅、白、藍、黑色所組成的循環色系
prism(n)----棱鏡色系,由紅、橙、黃、綠、藍、紫色所組成的循環色系
gray(n)----灰階色系
bone(n)----帶淺藍的灰階色系
vga----windows 16色系
除了vga色系以外,各色系皆可自訂顏色的數目n,可用colorbar()函數觀察。
MATLAB預設為64色。
第六週課程----繪圖函數semilogx()、semilogy()、loglog()
當數值資料間的差距過大時,若要以此資料直接做出圖表,會因為資料間的變化率過大,繪製的圖表不易判讀,這時可採用對數數值來呈現圖表資料。
例如 :
MATLAB提供許三種對數繪圖函數,包括:semilogx()、semilogy()、loglog()。
針對上一個範例資料,若採用semilogy()函數,可以得到如下的圖表
semilogx()、semilogy()、loglog()函數的命令格式與plot()函數相同,也可加入線條規範語法(Line specification syntax)。
例如 :
>> x = 0:100;
>> figure, plot(x, x.^2-3*x+5), grid
改用semilogy()函數
>> x = 0:100;
>> figure, semilogy(x, x.^2-3*x+5, 'm'), grid
改用loglog()函數
>> x = 0:100;
>> figure, loglog(x, x.^2-3*x+5, 'm'), grid
2013年3月26日 星期二
第五週課程----繪圖函數ezplot
ezplot()函數與fplot()函數一樣,不需要繪圖數據陣列,只要設定一個描述函數的字串,就可運用ezplot()函數繪出指定的函數圖形。ezplot()函數使用上比fplot()函數更為簡單。
¡ezplot()函數的命令格式如下:
ezplot('fun', [xmin xmax ymin ymax], fig)
其中fun為函數的字串;[xmin xmax ymin ymax]為顯示繪圖範圍向量,其中範圍向量可以省略,其預設值為-2*pi~2*pi之間的範圍;fig為指定繪圖視窗編號。但是ezplot()函數不支援繪圖控制碼。
ezplot()函數雖與fplot()函數相似,不過卻多了繪製隱函數(implicit function)及參數式(parametric equations)圖形。
例如繪製隱函數 f(x,y) = x^4-3y^2
>> ezplot('x^4-3*y^2')
會發現自動多出圖形標題及 x 軸與 y 軸的說明。
例如繪製參數式 x = 2cos(t)-cos(30t)、y = 2sin(t)-sin(30t)圖形,t介於0~2pi之間
>> ezplot('2*cos(t)-cos(30*t)', '2*sin(t)-sin(30*t)', [0 pi 0 pi]), hold on
>> ezplot('2*cos(t)-cos(30*t)', '2*sin(t)-sin(30*t)', [pi 2*pi pi 2*pi]), hold off
註:以ezplot()函數繪製圖形時,所設定的繪圖點數有限,當圖形變化劇烈時會出現不平滑的現象,因此本例採用兩次繪圖。
或是使用內聯函數繪製參數式 x = tcos2t, y = tsin2t圖形,t介於0~4*pi之間
>> x = inline('t*cos(2*t)')
>> y = inline('t*sin(2*t)')
>> ezplot(x,y,[0 pi]*4)
第五週課程----繪圖函數fplot
fplot()函數不需要繪圖數據陣列,只要設定一個描述函數的字串,就可運用fplot()函數繪出指定的函數圖形。
¡fplot()函數的命令格式如下:
fplot('fun', [xmin xmax ymin ymax])
其中fun為函數的字串;[xmin xmax ymin ymax]為顯示繪圖範圍向量,其中xmin與xmax分別表示x軸的最小值與最大值,並且不可以省略,而ymin與ymax分別表示y軸的最小值與最大值,若省略則會依實際大小由MATLAB自動調整顯示的y軸範圍。fplot()函數也可加入線條規範語法(Line specification syntax)來指定繪圖曲線的樣式。
例如:
>> fplot('sin(x)', [-pi pi], '--ro')
>> title('sin({\itx})'), xlabel('\itx')
例如:
>> fplot('0.6*cos(0.5*x)+0.2', [0 2*pi -2 2])
>> title('0.6cos(0.5{\itx})+0.2'), xlabel('\itx')
此外,MATLAB提供一種簡單建立函數字串的方法-匿名函數(Anonymous function),建立方法如下:
fun = @(arg_list) expr
其中arg_list為函數的輸入引數(自變數)字串,expr為函數本體,fun為
函數名稱,使用的方式如下:
>> fun = @(x) 0.6*cos(0.5*x) + 0.2;
>> fplot(fun, [0, 2*pi, -1.5, 1.5])
>> title('0.6cos(0.5{\itx})+0.2'), xlabel('\itx')
除了使用匿名函數之外,函數字串也可以使用.m檔的函式。
例如一個fun.m檔,其內容為
function y = fun(x)
y = 0.6*cos(0.5*x) + 0.2;
在命令視窗內鍵入
>> fplot('fun', [0, 2*pi, -1.5, 1.5])
>> title('0.6cos(0.5{\itx})+0.2'), xlabel('\itx')
其結果與上圖相同 。
還有一個簡單的方法是使用內聯函數(inline function),而不需另外建立一個.m檔的函式。內聯函數是MATLAB提供的物件(object),它與函式檔性質相同,但比較容易建立。
例如:
>> fun=inline('0.6*cos(0.5*x) + 0.2');
>> fplot('fun', [0, 2*pi, -1.5, 1.5])
>> title('0.6cos(0.5{\itx})+0.2'), xlabel('\itx')
其結果也與上圖相同 。
若fplot()函數的命令格式如下:
fplot('fun', [xmin xmax ymin ymax], tol)
且tol<1,則是設定繪圖的相對容許誤差值(relative error tolerance),內定為2×10^(-3)。適度的調整tol可得到較佳的繪圖效果。
例如:
>> fun = @(x) sin(15*(3*x^3+2*x^2))./(x+1);
>> fplot(fun,[0 2])
若改為
>> fplot(fun,[0 2], 10^-5)
可發現與之前的繪圖有明顯差異。fplot()函數的另一項特點是會依據函數字串的曲線陡峭程度自動調整數據的點數,以繪出較為平滑的曲線。
此外,若fplot()函數的命令格式如下:
fplot('fun', [xmin xmax ymin ymax], N)
且N>=1,則是設定繪圖的點數最小為N+1個點,N內定為1;繪圖點的最大間距限制為(xmax-xmin)/N。
fplot()也可以指定變數來接收繪圖數據,格式如下:
[x y] = fplot('fun', [xmin xmax ymin ymax])
其中x為x軸繪圖數據,y為y軸繪圖數據。
2013年3月25日 星期一
第五週課程----繪圖函數plot()
一、繪圖函數plot
其中 y 為一向量變數。繪製圖形時,若 y 屬於為實數向量,x 軸將以 1、2、...、length(y),方式指定 x 軸座標,並以藍色" . 點"符號(預設)分別在(1,y(1))、(2,y(2))、...、(length(y),y(end))座標上顯示,再以實線(預設)依序將各座標連接起來。若 y 屬於為複數向量,x 軸將以real(y(1))、real(y(2))、...、real(y(end)),方式指定 x 軸座標(也就是y的實部),y 軸則為imag(y(1))、imag(y(2))、...、imag(y(end))(也就是y的虛部)。其中real()為取實部函數、imag()為取虛部函數、length()可回傳向量的最大列(行)數,而end指的是向量最後一個元素。
>> plot(y) % 預設為藍色.符號與實線連接
>> y=[3+3i 2-6i 5+i 7 1+5i];
>> plot(y) % 預設為藍色.符號與實線連接
格式二:
plot(x, y, LineSpec)
其中 x、y 皆為向量變數且 x、y 的元素個數須相同。繪製圖形時,若 x、y 皆屬於為實數向量,x 軸將以 x(1)、x(2)、...、x(end) 方式指定x軸座標,並以 y(1)、y(2)、...、y(end) 方式指定 x 軸座標,再以線條規範語法(Line specification syntax,LineSpec)來指定繪圖曲線的樣式。若 x 或 y 屬於為複數向量,將忽略向量虛部部份,僅以實數部份呈現繪圖座標,並提出警告訊息(Warning: Imaginary parts of complex X and/or Y arguments ignored)。
>> y=[3 2 5 7 1];
>> plot(x, y) % 預設為藍色.符號與實線連接
>> y=[3+3i 2-6i 5+i 7 1+5i];
>> plot(x, y) % 預設為藍色.符號與實線連接
Warning: Imaginary parts of complex X and/or Y arguments ignored
格式三:
plot(x1, y1, LineSpec1, x1, y1, LineSpec2, ...)
其中 x1、y1、x2、y2、...皆為向量變數。此時將可繪出多條曲線,分別為 x1、y1 ,x2、y2 曲線、...。各曲線皆依各線條規範語法LineSpec1、LineSpec1、...指定繪圖曲線的樣式。
>> plot(x,sin(x),'-ro',x,cos(x),':gx')
線條規範語法(Line specification syntax,LineSpec)
線條規範語法如下表所示,使用時以字串串接方式輸入,各符號的順序可以不計。
其中黃底為預設值
格式四:
plot(x, y, LineSpec, 'property1', p1, 'property2', p2 ...)
其中 x、y 皆為向量變數。此時僅能繪出一條曲線。曲線依線條規範語法LineSpec指定繪圖曲線的樣式。而各標記與線條的屬性 property1、property2、...由p1、p2、...指定。屬性的英文字母大小寫不拘。
各屬性如下:
>> plot(x,sin(x),'-rs','LineWidth',4,'markeredgecolor','b','markerfacecolor','m')
有時也可以使用set()函數重新定義標記與線條的屬性。
>> h = plot(x,cos(x),'-md'); % h為曲線的handle
接著輸入
>> set(h, 'LineWidth',2,'Markerfacecolor','b') % 指定調整曲線handle h的屬性
繪多條曲線也可以善加運用 hold 命令。
三、除了繪圖函數plot之外,MATLAB亦提供許多二維(2D)類型的繪圖函數。包括:
plot()函數命令格式如下:
格式一:
plot(y)其中 y 為一向量變數。繪製圖形時,若 y 屬於為實數向量,x 軸將以 1、2、...、length(y),方式指定 x 軸座標,並以藍色" . 點"符號(預設)分別在(1,y(1))、(2,y(2))、...、(length(y),y(end))座標上顯示,再以實線(預設)依序將各座標連接起來。若 y 屬於為複數向量,x 軸將以real(y(1))、real(y(2))、...、real(y(end)),方式指定 x 軸座標(也就是y的實部),y 軸則為imag(y(1))、imag(y(2))、...、imag(y(end))(也就是y的虛部)。其中real()為取實部函數、imag()為取虛部函數、length()可回傳向量的最大列(行)數,而end指的是向量最後一個元素。
例如:>> y=[3 2 5 7 1];
>> plot(y) % 預設為藍色.符號與實線連接
>> y=[3+3i 2-6i 5+i 7 1+5i];
>> plot(y) % 預設為藍色.符號與實線連接
格式二:
plot(x, y, LineSpec)
其中 x、y 皆為向量變數且 x、y 的元素個數須相同。繪製圖形時,若 x、y 皆屬於為實數向量,x 軸將以 x(1)、x(2)、...、x(end) 方式指定x軸座標,並以 y(1)、y(2)、...、y(end) 方式指定 x 軸座標,再以線條規範語法(Line specification syntax,LineSpec)來指定繪圖曲線的樣式。若 x 或 y 屬於為複數向量,將忽略向量虛部部份,僅以實數部份呈現繪圖座標,並提出警告訊息(Warning: Imaginary parts of complex X and/or Y arguments ignored)。
例如:>> x=[2 4 6 7 9];
>> y=[3 2 5 7 1];
>> plot(x, y) % 預設為藍色.符號與實線連接
例如:>> x=[2 4 6 7 9];
>> y=[3+3i 2-6i 5+i 7 1+5i];
>> plot(x, y) % 預設為藍色.符號與實線連接
Warning: Imaginary parts of complex X and/or Y arguments ignored
格式三:
plot(x1, y1, LineSpec1, x1, y1, LineSpec2, ...)
其中 x1、y1、x2、y2、...皆為向量變數。此時將可繪出多條曲線,分別為 x1、y1 ,x2、y2 曲線、...。各曲線皆依各線條規範語法LineSpec1、LineSpec1、...指定繪圖曲線的樣式。
例如:>> x=linspace(0,2*pi,50);
>> plot(x,sin(x),'-ro',x,cos(x),':gx')
線條規範語法(Line specification syntax,LineSpec)
線條規範語法如下表所示,使用時以字串串接方式輸入,各符號的順序可以不計。
格式四:
plot(x, y, LineSpec, 'property1', p1, 'property2', p2 ...)
其中 x、y 皆為向量變數。此時僅能繪出一條曲線。曲線依線條規範語法LineSpec指定繪圖曲線的樣式。而各標記與線條的屬性 property1、property2、...由p1、p2、...指定。屬性的英文字母大小寫不拘。
各屬性如下:
例如:>> x=linspace(0,2*pi,50);
>> plot(x,sin(x),'-rs','LineWidth',4,'markeredgecolor','b','markerfacecolor','m')
有時也可以使用set()函數重新定義標記與線條的屬性。
例如:>> x=linspace(0,2*pi,50);
>> h = plot(x,cos(x),'-md'); % h為曲線的handle
接著輸入
>> set(h, 'LineWidth',2,'Markerfacecolor','b') % 指定調整曲線handle h的屬性
繪多條曲線也可以善加運用 hold 命令。
三、除了繪圖函數plot之外,MATLAB亦提供許多二維(2D)類型的繪圖函數。包括:
1. 簡單易使用的fplot()與ezplot()
2.對數semilogx()、semilogy()、loglog()
3.累積圖形area()
4.填色函數fill()
5.火柴棒圖stem()
6.階梯圖stairs()
7.羽毛圖feather()
8.誤差條狀圖errorbar()
9.羅盤圖compass()
10.雙y軸函數plotyy()
11.繪製梯度向量場的gradient()及quiver()
12.長條圖bar()
13.橫向長條圖barh()
14.派形圖pie()
15.直方圖(histogram)hist()
16.極座標統計圖rose()
17.彗星圖comet()---俱動態畫的繪製圖形
18.等高線圖contour()、contourc()、contourf()19.極座標曲線圖polar()
使用 lookfor plot 可查出大部份的繪圖函數
訂閱:
文章 (Atom)