2016年1月23日 星期六

[MATLAB] 如何對 ezplot 擷取圖形資料

MATLAB 中所提供的 symbolic toolbox 是非常強大的符號運算工具,其中的 ezplot 幫助我們能對未定符號進行快速畫圖,現在假定我們非常滿意圖形的結果,並且想試圖擷取 ezplot中的 x軸與 y軸的 圖形資料該怎麼辦?

以下我們用一個例子說明如何擷取圖形資料:

syms x %使用 symbolic toolbox 定義變數 $x$ 

f = ezplot( x^2, [-1,1] ); %使用 ezplot 繪製 $x^2$ 且限定 區間 $[-1,1]$

f_xaxis = get(f, 'xdata' ); %從 ezplot 提取 圖形 $x$ 軸資料
f_yaxis = get(f,  'ydata');  %從 ezplot 提取 圖形 $y$ 軸資料

那麼上述中的 f_xaxis 即為我們原函數在ezplot 的x軸資料, f_yaxis 為我們原函數在ezplot 的y軸資料。一旦擷取完畢,要做剩餘的運算會變得相當容易,比如說要找ezplot 圖中的最大值,我們可以直接針對剛剛截取到的 y軸資料使用

max(f_yaxis)

NOTE:
由於我們是從 ezplot 的 x軸與 y軸資料來擷取最大值,故此法不保證取得的結果為 "真正" 的極值。僅是一種簡便的方法。如果讀者目的在於要找極值,則建議使用 fmincon 或者 fminunc 等函數會更為精準。