คู่มือที่ดีที่สุดของ MATLAB เท่าที่เคยเห็นมา

ผมว่าเกือบร้อยทั้งร้อยเวลาใช้งาน MATLAB แล้วจะมีปัญหาคือไม่มีคู่มือ อย่างดีก็แค่พิมพ์

help command

ซึ่งคำสั่งที่จะขอความช่วยเหลือก็จะเป็นแค่คำสั่งที่รู้จัก แล้วเราก็ไม่มีทางรู้ว่า MATLAB สามารถทำ
อะไรได้บ้างนอกจากอ่านคู่มือให้ครบทุกหน้า ซึ่งใครจะทำ วันนี้ไม่ว่างแต่อยากดูคู่มือ MATLAB ว่า
ดีแค่ไหน (ปัจจุบันดีขึ้นมาก)  แล้วผมก็พบรูปข้างล่างนี้ รูปข้างล่างนี้พอได้ในหน้า Types of
MATLAB ซึ่งในแต่ละรูปจะเป็นรูปที่แสดงให้เราเห็นทันทีเลยว่าสิ่งที่เราได้จากคำสั่งหล่านี้จะทำ
อะไรให้เราได้บ้าง แต่ละรูปก็จะมีชื่อคำสั่งที่สามารถเชื่อมโยงเราไปยังคู่มือของคำสั่งนั้น ๆ ได้

 matlab1

สุดยอดดีมาก ๆ โดยเฉพาะอย่างยิ่ง การพล็อตรูป 3 D ดูแค่นี้ชัดเลยนะครับไม่ต้องไปหาเพิ่มเติมที่
ไหนอีก

 

 matlab2

ด้วยความสัตย์จริง พึ่งรู้ว่ามีอย่างนี้ด้วย

Advertisements

Defining the Color of Lines for Plotting

ผู้ใช้ MATLAB จะมีความรู้สึกร่วมกันอยู่อย่างหนึ่งคือ คู่มือไม่ดี วันนี้เพื่อนมาถามปัญหาที่ค้างคาใจ
อยู่นาน ซึ่งปัญาคือ

ต้องการพล็อตกราฟ โดยพล็อตกราฟทีละสิบข้อมูล โดยในแต่ละข้อมูลจะต้องมีสีต่างกัน

ไม่เคยทำนะครับ อย่างเก่งผมก็แค่พล็อตทีละสองหรือสามข้อมูลแล้วให้ MATLAB กำหนดสีให้เอง
ซึ่งจะใช้วิธีถึก ๆ ดังนี้

plot(x,y1,x,y2)

MATLAB ก็จะเลือกสีให้ ถ้าข้อมูลเพิ่มเป็นซักสามสิบหล่ะ คือมี y1 ถึง y10 ไอ้การทำแบบข้างบนนั้น
มันไม่ได้ซะแล้ว ที่สำคัญสีที่ให้โดยอัตโนมัตินั้นมีแค่ 8 สีเอง ซึ่งหนึ่งในนั้นเป็นสีขาว

เรามาเริ่มต้นทำความเข้าใจว่าเราจะพล็อตข้อมูล y1 ถึง y10 ในคราวเดียวได้อย่างไรก่อน วิธีการก็
ทำการสร้างเมตริกซ์ของข้อมูลที่จะพล็อต ตัวอย่างเช่น

x = 0:pi/20:4*pi;
A = ones(length(x),10);   % กำหนดขนาดของเมตริกซ์เพื่อเพิ่มความเร็วในการคำนวณ
for i = 1:10
A(:,i) = sin(x-i/5)’;      % เก็บข้อมูลเป็นเวกเตอร์ในคอลัมน์ของเมตริกซ์ A
end

plot(x,A);

ผลที่ได้จะเห็นได้อย่างชัดเจนว่าเริ่มมีสีซ้ำกัน ทางแก้ก็คือกำหนดสีให้ MATLAB ใหม่ดังนี้

C = zeros(10,3);

for i = 1:10
C(i,1) = 0.1*i;
end
set(gcf,’DefaultAxesColorOrder’,C);

แล้วก็ตามด้วยคำสั่งในการพล็อตกราฟข้างต้น

ผลลัพธ์ที่ได้จะเป็นดังข้างบน

และแน่นอนเราหาทางกลับไม่เจอหรอก ต้องพลิกคู่มืออีกหลายตลบแล้วก็ลองผิดลองถูก จริง ๆ ก็แค่

reset(gcf); หรือ set(gcf,’default’);

ทุกอย่างก็จะกลับไปเหมือนเดิม

หมายเหตุ: ทุกอย่างเอามาจากคู่มือของ MATLAB ทั้งหมด