2013年3月26日 星期二

第五週課程----繪圖函數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軸繪圖數據,yy軸繪圖數據


1 則留言:

  1. I don't read Chinese but thank you for the examples, they were helpful.

    回覆刪除