跳轉到內容

MATLAB 程式設計/控制代碼/圖形控制代碼

來自華夏公益教科書,開放的書籍,開放的世界

圖形控制代碼

[編輯 | 編輯原始碼]

圖形本質上是一個視窗,用作一個或多個繪圖、UI 控制元件等的容器。它是您可以建立的第二高級別的物件

要建立圖形,請使用 figure 函式,如下所示

>> fhandle = figure;

這將建立一個新的圖形視窗,並將所有圖形資料儲存在變數 fhandle 中。您還可以告訴 MATLAB 在建立圖形的同時為其指定任意數量的屬性,使用以下語法

>> fhandle = figure('Propertyname1', value1, 'Propertyname2', value2, ...);

有關圖形的有效屬性名稱列表,請參見 文件“圖形屬性”頁面

您可以使用 close 函式以程式設計方式關閉圖形並銷燬其控制代碼

>> close(fhandle);

注意
如果關閉圖形,無論是使用 close 函式還是點選“X”,您將無法再訪問資料,嘗試這樣做會導致錯誤。關閉圖形還會銷燬對依賴它的軸和註釋的所有控制代碼。

getset 函式

[編輯 | 編輯原始碼]

MATLAB 允許您使用 'get' 函式以以下方式獲取圖形控制代碼(或實際上任何型別的圖形控制代碼,包括軸、線物件、文字物件等)的任何屬性

>> h = figure;
>> propvar = get(h, 'Propertyname');

將儲存在變數 propvar 中的具有名稱 'Propertyname' 的屬性。使用 'get' 函式,您一次只能獲取一個屬性。

set 函式允許您設定圖形和其他圖形控制代碼的任意數量的屬性。您可以透過以下方式呼叫 set 函式來更改任意數量的屬性

>> set(h, 'Propname1', propval1, 'Propname2', propval2, ...);

如果您首先建立一個控制代碼陣列,您還可以將相同屬性修改為相同的值,用於任意數量的控制代碼

>> handlevec(1) = figure;
>> handlevec(2) = figure;
>> set(handlevec, 'Name', 'Figure window')

將建立兩個新的圖形,併為它們都賦予相同的標題:“圖形視窗”。

有關圖形屬性的有效屬性名稱和值的列表,請參見文件。

即使您沒有將圖形分配給變數,您仍然可以使用內部 MATLAB 變數 gcf 來訪問它。這主要為了方便,因此您不必將圖形控制代碼從一個函式傳遞到另一個函式來進行修改。但是,由於下面的警告,您在使用 gcf 時必須非常小心,以確保您在有多個圖形程式的情況下修改了正確的圖形

要獲取當前圖形的當前屬性列表,請使用以下語法

>> get(gcf)

您還可以使用以下方法獲取或設定特定屬性

>> get(gcf, 'propertyname');
>> set(gcf, 'propertyname', value);

有關有效的圖形屬性名稱及其值的格式,請參見 文件“圖形屬性”頁面

儲存圖形內容

[編輯 | 編輯原始碼]

要儲存圖形的整個內容,請使用 saveas 函式

>> saveas(fhandle, 'X.fig');

將儲存控制代碼為 fhandle 的圖形的內容為 X.fig。.fig 檔案可以在以後手動開啟和編輯,儘管以程式設計方式以一致的方式開啟和重新編輯它們通常很困難。

您還可以使用 saveas 函式儲存影像格式,例如 .jpg、.tif、.bmp、.png 等。saveas 函式本質上是圖形視窗本身中“檔案 -> 另存為...”選項的命令列版本,但可能存在一些解析度差異。使用這兩種儲存圖形到檔案的方法,生成的影像的質量通常不足以用於出版物等目的。

如果需要圖形的高質量版本,可以使用 MATLAB 的 print 函式將圖形列印到向量格式(例如 Adobe Illustrator 的格式,使用 -dill 標誌獲取)或使用指定解析度的柵格格式(例如,使用兩個標誌 -dpng 和 -r300 將告訴 MATLAB 將圖形列印到 300dpi 的 PNG 檔案)。有關支援的輸出格式的更多詳細資訊,請參見該函式的文件 此處

作為 MATLAB 的 print 函式的替代方案,可以使用 MATLAB 的貢獻者中心提供的 plot2svg 函式從許多圖形(不僅僅是 Simulink 模型)獲取 SVG 檔案(可從 這裡 獲取)。可以使用免費軟體工具(如 Inkscape)編輯 SVG 檔案,也可以在 Illustrator 中開啟。

華夏公益教科書