注意:不要使用截圖和畫圖板
1、在Matlab的Figure窗口,點擊菜單欄的Edit,選擇Copy Figure,然后轉到你的文檔界面,把光標放到需要插入圖片的位置,然后Ctrl+C,你就可以得到比較清晰的圖片了。
需要注意的是,這時候的圖片有相當一部分空白區域,你可以用word圖片工具欄的‘裁剪’功能把圖片空白區域消除掉。
另外,如果需要對圖片的大小進行拉伸,最好不要直接用鼠標拖拉,這樣容易導致圖中的點線分布變形,可以右鍵點擊圖片,選擇‘設置圖片格式’,在‘大小’標簽的‘縮放’欄里,設置圖片的大小。
2、直接保存 Figure 為了便於后續處理和應用,建議大家形成一個良好習慣,即把繪制所得的Figure窗口直接保存為.fig文件,以后你就可以多次打開它,對圖像進行修改處理,例如加注標簽(label)等,也可以打開.fig文件把所顯示的圖像轉存為其它格式的文件,例如.eps、.jpg等。
4、十分滿意的圖
在做Simulink仿真時,使用的Scope波形顯示模塊實際上也是一種Figure窗口,不過Matlab把Scope的菜單欄隱藏起來,只提供了幾個有限的參數設置。如果需要對Scope中的圖加上坐標、更改界面背景色等,沒有菜單欄就基本上無從下手了
先運行模型,等運行結束后,scope顯示出來圖像以后,在MATLAB上運行
set(0,'ShowHiddenHandles','On')
set(gcf,'menubar','figure')
這時候你會發現scope的工具欄的上面多了一行,點擊insert-axes,鼠標會變成十字形狀,然后再圖像的任意一處雙擊左鍵出現一個對話框Property Editor,選中style在窗口的右便會出現color,這時你就可以任意修改背景顏色了。點擊view里面的工具欄進行設置。還可以調整 Scope 的其他圖形屬性,包括添加 xlabel、ylabel、title,調整波形曲線的線型、粗細等等:
最后點擊edit里面的copy figure ,粘貼到word就可以了。
5、一般的做法是將數據輸出到工作空間,然后用畫圖指令Plot畫圖。
輸出到工作空間的方法一般有這么幾種:
1.添加To Workspace模塊; 2.添加out模塊; 3.直接用Scope輸出。
直接用Scope輸出的具體步驟為:
1) 首先添加一個clock時間控件,輸出時間t到一個示波器里。修改該示波器參數,進入到data history,刪除limit data,勾選save data to workspace,變量名t,格式array。
2) 仿照上面示波器參數設置,修改你所要顯示的示波器。設變量名為x
3) 在MATLAB主界面(或新建一個m文件)輸入:plot(t,x)
(ps:有時候t可能不止一列,需要選擇一下,如:plot(t(:,1),x)).
4) 整理圖像,選edit下copy figure,粘貼入word中。
下面以一個例子分別介紹三種變量類型的畫圖方法。
1.輸出類型為向量形式。從圖上看到,輸出了兩維時間序列,而實際輸出到工作空間的變量ScopeData為三維序列,其中第一列為時間,這正好為我們畫圖提供了方便。我們可以采用畫圖命令如下:
figure;
plot(ScopeData(:,1),ScopeData(:,2),'LineWidth',1.5);
hold on;
plot(ScopeData(:,1),ScopeData(:,3),'r:','LineWidth',1.5);
legend('正弦波','鋸齒波');
hold off;
當然你還可以采用其他繪圖方式,如采用Subplot方式。
2.輸出類型為Structure with Time。即結構體帶時間。我們可以看一下這個結構體包含哪些東西。在Command Window里直接輸入變量名。
ScopeData =
time: [51x1 double]
signals: [1x1 struct]
blockName: 'untitled/Scope'
可見,該結構體包含了時間序列,信號結構體,以及我的框圖名。實際上我們的輸出信號都包含在signals這個結構體里了,我們接着可以再看看signals結構體的組成部分。我們輸入ScopeData.signals(這點與C語言是類似的)。
ans =
values: [51x2 double]
dimensions: 2
label: ''
title: ''
plotStyle: [0 0]
可以看到,values是一個51x2 的double型矩陣,它正好是我們輸出的數據。我們采用這樣的畫圖命令即可完成畫圖:
figure;
plot(ScopeData.time,ScopeData.signals.values(:,1),'LineWidth',1.5);
hold on;
plot(ScopeData.time,ScopeData.signals.values(:,2),'r:','LineWidth',1.5);
legend('正弦波','鋸齒波');
hold off;
結果同上。
3.對於Structure類型,正好是Structure with time 的精簡版,因為它的時間為空,因此你必須用其他方式獲得時間,這里就不介紹了。
上述三種輸出方式,1最簡單,但有時候你又不得不用結構體形式畫圖,例如下面這種情況,這時候你就只能用2和3了,當然最好還是2。