ก่อนอื่นเราจะสร้าง 2D matrix array ขึ้นมาก่อนโดยใช้ตัวอย่างจากโพสก่อนๆก็แล้วกัน
%% imagesc vs pcolor vs surf npts = 51; x = linspace(-1,1,npts); y = x; [Y,X] = meshgrid(y,x); [phi,rho] = cart2pol(X,Y);
เอาล่ะ สมมติว่าเราจะพล๊อต rho ซึ่งเป็น 2D array โดยปกติเราจะใช้คำสั่ง imagesc ค่ะ
%% imagesc figure(1) imagesc(rho); axis image;
ที่ใช้คำสั่งนี้เป็น default เพราะว่ากราฟจะแสดงค่าที่อยู่ในmatrixโดยตรง และสีก็จะscaleตามค่าของmatrixนั้น
ข้อเสียของimagescคือ ถ้าเรามีจำนวน data ไม่มาก รูปที่ได้จะไม่smooth อย่างที่เห็นรูปข้างบนเราสามารถเห็นpixelของแต่ละช่องได้
ดังนั้นเราจึงใช้อีกคำสั่งคือ pcolor จะได้รูปแบบนี้
%% pcolor figure(2) pcolor(rho);axis image;
shading interp;
รูปที่ออกมาจะ smooth มากกว่าที่ใช้ imagesc
คำสั่งสุดท้ายที่จะพูดถึงคือ surf ซึ่งทำงานคล้ายกับ pcolor แต่ใช้ในการวาดรูป 3 มิติ
%% surf figure(3) surf(x,y,rho); axis image;
เช่นเดียวกับ pcolor ถ้า plot surf โดยไม่ได้ใส่คำสั่งเพิ่มเติม รูปที่ออกมาจะเห็นเส้นตารางคั่นแต่ละ pixel
ถ้าใส่
shading interp;
เส้นที่คั่นก็จะหายไป และสีก็จะ smooth ขึ้น
แต่นอกจากจะทำให้smoothได้แล้ว สำหรับ 3D plot เรายังใส่ lighting และ เลือกมุมที่จะดูได้ด้วย
camlight; lighting gouraud; lightangle(10,90) view(45,35);
No comments:
Post a Comment