顯示具有
inline function(內聯函數) 標籤的文章。
顯示所有文章
顯示具有
inline function(內聯函數) 標籤的文章。
顯示所有文章
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('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軸繪圖數據。