視覺是人們感覺世界、認識天然的最重要依靠。數據可視化的目的在於:經過圖形,從一堆雜亂的離散數據中觀察數據間的內在關係,感覺由圖形所傳遞的內在本質。MATLAB一貫注重數據的圖形表示,並不斷地採用新技術改進和完備其可視化功能。
本章將系統地闡述:離散數據表示成圖形的基本機理;曲線、曲面繪製的基本技法和指令;特殊圖形的生成和使用示例;如何使用線型、色彩、數據點標記凸現不一樣數據的特徵;如何利用着色、燈光照明、反射效果、材質體現和透明度處理渲染、烘托表現高維函數的性狀;如何生成和運用標識,畫龍點睛般地註釋圖形;如何顯示和轉換unit8、unit16、double三種不一樣數據類型所體現的變址、灰度和真彩圖象,如何讀寫各類標準圖象格式文件;如何經過圖形窗的交互操做對圖形進行修飾、調整;如何打印和輸出圖形文件。
本章的圖形指令只涉及MATLAB的"高層"繪圖指令。這種指令的形態和格式友善,易於理解和使用。
整章內容遵循由淺入深、由基本到高級、由算例帶概括的原則。全部算例都是運行實例,易於讀者實踐試驗,並從中掌握通常規律。
4.1 引導
4.1.1 離散數據和離散函數的可視化
【例4.1.1-1】用圖形表示離散函數 。
n=0:12;
y=1./abs(n-6);
plot(n,y,’r*’,’MarkerSize’,20)
grid on
Warning: Divide by zero.
4.1.2 連續函數的可視化
【例4.1.2-1】用圖形表示連續調製波形 。
t1=(0:11)/11*pi; % <1>
y1=sin(t1).*sin(9*t1);
t2=(0:100)/100*pi; % <3>
y2=sin(t2).*sin(9*t2);
subplot(2,2,1),plot(t1,y1,’r.’),axis([0,pi,-1,1]),title(’子圖 (1)’)
subplot(2,2,2),plot(t2,y2,’r.’),axis([0,pi,-1,1]),title(’子圖 (2)’)
subplot(2,2,3),plot(t1,y1,t1,y1,’r.’)
axis([0,pi,-1,1]),title(’子圖 (3)’)
subplot(2,2,4),plot(t2,y2)
axis([0,pi,-1,1]),title(’子圖 (4)’) html
4.2.1 plot的基本調用格式
【例4.2.1-1】簡單例題,比較方便的試驗指令。
t=(0:pi/50:2*pi)’;k=0.4:0.1:1;Y=cos(t)*k;plot(t,Y)
【例4.2.1-2】用圖形表示連續調製波形 及其包絡線。
t=(0:pi/100:pi)’; % <1>
y1=sin(t)*[1,-1]; % <2>
y2=sin(t).*sin(9*t); % <3>
t3=pi*(0:9)/9; % <4>
y3=sin(t3).*sin(9*t3);plot(t,y1,’r:’,t,y2,’b’,t3,y3,’bo’) % <5>
axis([0,pi,-1,1]) % <6>
【例4.2.1-3】用複數矩陣形式畫Lissajous圖形。(在模擬信號時代,Lissajous圖形經常使用來測量信號的頻率。)
t=linspace(0,2*pi,80)’; % <1>
X=[cos(t),cos(2*t),cos(3*t)]+i*sin(t)*[1, 1, 1]; %(80x3)的複數矩陣
plot(X) % <3>
axis square % <4>
legend(’1’,’2’,’3’)
【例4.2.1-4】採用模型 畫一組橢圓。
th = [0:pi/50:2*pi]’;
a = [0.5:.5:4.5];
X = cos(th)*a;
Y = sin(th)*sqrt(25-a.^2);
plot(X,Y),axis(’equal’),xlabel(’x’), ylabel(’y’)
title(’A set of Ellipses’)
4.2.2 曲線的色彩、線型和數據點形
4.2.2.1 色彩和線型
4.2.2.2 數據點形
【例4.2.2.2-1】用圖形演示平面上一個方塊四個頂點在仿射投影(Affine Projection)下的位置、形狀變化。
%
p1=[-0.5,0,1]’;p2=[-0.5,1,1]’;p3=[0.5,1,1]’;p4=[0.5,0,1]’;
Sq=[p1,p2,p3,p4,p1];
%
dx=0.5;dy=1;T=[1,0,dx;0,1,dy;0,0,1];
%
th=pi/6;R=[cos(th),-sin(th),0;sin(th),cos(th),0;0,0,1];
%
alpha=2;beta=3;S=[alpha,0,0;0,beta,0;0,0,1];
E=eye(3,3);% <10>
TRS={E,T,R,S}; %<11>
ss={’r^’,’rd’,’rp’,’rh’}; %<12>
tt={’Original Square’,’Translation’,’Rotation’,’Scaling’};
% <13>
for i=1:4
W=TRS{i}*Sq; %
subplot(2,2,i)
for k=1:4
plot(W(1,k),W(2,k),ss{k}); % <19>
axis([-3,3,-1,5]),axis equal
hold on % <21>
end
plot(W(1,:),W(2,:)) % <23>
grid on %
title(tt{i}) %
hold off %
end
4.2.3 座標、刻度和分格線控制
4.2.3.1 座標控制
【例4.2.3.1-1】觀察各類軸控制指令的影響。演示採用長軸爲3.25,短軸爲1.15的橢圓。注意:採用多子圖表現時,圖形形狀不只受"控制指令"影響,並且受整個圖面"寬高比"及"子圖數目"的影響。本書這樣處理,是出於篇幅考慮。讀者欲想準確體會控制指令的影響,請在全圖狀態下進行觀察。(圖4.2-6)
t=0:2*pi/99:2*pi;
x=1.15*cos(t);y=3.25*sin(t); %
subplot(2,3,1),plot(x,y),axis normal,grid on,
title(’Normal and Grid on’)
subplot(2,3,2),plot(x,y),axis equal,grid on,title(’Equal’)
subplot(2,3,3),plot(x,y),axis square,grid on,title(’Square’)
subplot(2,3,4),plot(x,y),axis image,box off,title(’Image and Box off’)
subplot(2,3,5),plot(x,y),axis image fill,box off
title(’Image and Fill’)
subplot(2,3,6),plot(x,y),axis tight,box off,title(’Tight’)
4.2.3.2 刻度、分格線和座標框
【例4.2.3.2-1