วันเสาร์ที่ 25 เมษายน พ.ศ. 2552

OOP in matlab

Object Oriented Programming หรือ เรียกย่อว่า OOP หมายถึง การเขียนโปรแกรมที่ประกอบด้วยกลุ่มของวัตถุ(Objects) แต่ละวัตถุจะจัดเป็นกลุ่มในรูปของคลาส ซึ่งแต่ละคลาสอาจมีคุณสมบัติ การปกป้อง (Encapsulation) การสืบทอด (Inheritance) การพ้องรูป (Polymorphism)


แนวคิดของการโปรแกรมเชิงวัตถุ (OOP Concepts)


1. การปกป้อง (Encapsulation)
- การรวมกลุ่มของข้อมูล และกลุ่มของโปรแกรม เพื่อการปกป้อง และเลือกตอบสนอง
2. การสืบทอด (Inheritance)
- ยอมให้นำไปใช้ หรือเขียนขึ้นมาทดแทนของเดิม
3. การพ้องรูป (Polymorphism) = Many Shapes
- Overloading มีชื่อโปรแกรมเดียวกัน แต่รายการตัวแปร (Parameter List) ต่างกัน - Overriding มีชื่อโปรแกรม และตัวแปรเหมือนกัน เพื่อเขียน behavior ขึ้นมาใหม่


กฎของ OOP (Object Oriented Programming)

อาลัน เคร์(Alan Kay) เป็นผู้บุกเบิกแนวความคิดการเขียนโปรแกรมเชิงวัตถุคนหนึ่ง และมีส่วนพัฒนา Small talk ได้เสนอกฎ 5 ข้อของ OOP ไว้ดังนี้
1. ทุกสิ่งเป็นวัตถุ (Everything is an object)
2. โปรแกรมคือกลุ่มของวัตถุที่ส่งข่าวสารบอกกันและกันให้ทำงาน (A program is a bunch of objects telling each other what to do by sending messages)
3. แต่ละวัตถุต้องมีหน่วยความจำ และประกอบด้วยวัตถุอื่น (Each object has its own memory made up of other objects)
4. วัตถุต้องจัดอยู่ในประเภทใดประเภทหนึ่ง (Every object has a type) 5. วัตถุประเภทเดียวกันย่อมได้รับข่าวสารเหมือนกัน (All objects of a particular type can receive the same messages)


โครงสร้างของ MATLAB Class


การเขียนโปรแกรม แบบ OOP ใน MATLAB นั้น ใช้ลักษณะของ OOP ในการออกแบบ โดยมีรูปแบบที่เฉพาะขึ้นอยู่กับลักษณะของภาษา ดังนี้
1. Method ทั้งหมดของ Class จะถูกเก็บไว้ที่ไฟล์ MATLAB function (นามสกุล .m)
2. Method ของ Class จะถูกเก็บอยู่ใน subdirectory ของ working directory เช่น method Fred จะเก็บที่ @Fred
3. ทุก Class จะต้องประกอบด้วย method ต่อไปนี้ อยู่ใน main directory
! The Constructor คือ method ที่มีชื่อเดียวกันกับ class ทำหน้าที่เก็บและกำหนดค่าเริ่มต้นให้กับ Class
!display.m คือ method ที่จะถูกเรียกใช้ เมื่อ MATLAB ต้องการจะแสดงเนื้อหาของ object
!char.m คือ method ที่จะคืนค่าข้อความบอกถึงลักษณะของ object
4. แต่ละ Method จะติดต่อ ร้องขอหรือส่งข้อมูลระหว่างกันต้องทำโดยผ่าน method get/set
การเขียนโปรแกรมโดยใช้ MATLAB มีความจำเป็นต้องเขียน function ขึ้นมาใหม่เพื่อให้เหมาะสมกับงานของเรา โปรแกรมที่เขียนโดย MATLAB จะ Save โดยใช้ extension เป็น " m " ซึ่งเรานิยมเรียกโปรแกรมที่เขียนโดยใช้ MATLAB ว่า M-file โดย M-file นี้จะแบ่งออกเป็น 2 ลักษณะคือเขียนในลักษณะของการบอกขั้นตอนหรือบอกบทการทำงานหรือที่นิยมเรียกว่า script file และอีกประเภทหนึ่งจะเขียนขึ้นในลักษณะของ function ซึ่งผู้ใช้สามารถรวบรวมเอา function ต่าง ๆ ของ MATLAB มารวมเข้าด้วยกันแล้วเขียนขึ้นเป็น function ใหม่ M-file ในลักษณะนี้เรียก function file


ตัวอย่างการใช้งาน MATLAB Class


ต่อไปจะยกตัวอย่างการเขียน OOP ด้วย MATLAB และขอยกตัวอย่างยอดนิยม คือการเขียน Class ของการเปิดบัญชีธนาคาร

1. สร้าง M file ใหม่ ขึ้นมา
File >> New >> M-File




2. สร้าง Class BankAccount โดยพิมพ์คำสั่ง ดังนี้

และบันทึกใน Directory ชื่อ @BankAccount โดยกำหนดชื่อไฟล์ เป็นชื่อเดียวกับ ชื่อ Directory ซึ่งก็คือชื่อ Class นั้นเอง


3. สร้าง Class อื่นๆ ประกอบดังต่อไปนี้

4. ปิดหน้าต่าง M-File และทดลองการทำงานดังนี้
นี่คือ การทดลองเขียน Class ด้วย MATLAB แบบง่ายๆ ซึ่งจะชี้ให้เห็นการทำงานแบบ OOP ของ MATLAB และควรจะฝึกเขียนโปรแกรมบ่อยๆ เพื่อให้เข้าใจและสร้าง Objects ได้ และแต่ละคลาสต้องมีคุณสมบัติ การปกป้อง (Encapsulation) การสืบทอด (Inheritance) การพ้องรูป (Polymorphism)



วันศุกร์ที่ 24 เมษายน พ.ศ. 2552

เริ่มการทำงานกับ MATLAB

เมื่อเรียนรู้ว่าโปรแกรม matlab คืออะไรแล้ว ลองมาเริ่มเรียนรู้กันเลยนะครับ (ถ้ายังไม่มีโปรแกรม สามารถโหลดแบบทดลองใช้มาใช้ก่อน ที่ http://www.mathworks.com/products/matlab/tryit.html)


ถ้าใช้ระบบปฏิบัติการ windows ก็ลงโปรแกรมตามปกติครับ จะไม่ขอกล่าวถึงในที่นี้ จะขอกล่าวเฉพาะการเริ่มใช้งานเลยนะครับ เมื่อเราติดตั้งโปรแกรมเสร็จเรียบร้อยแล้ว การจะเข้าใช้โปรแกรม โดยคลิกที่ start + All program + matlab





รอสักครู่ โปรแกรม matlab จะถูกโหลดขึ้นมาใช้งาน โดยจะแสดงรูปแบบมาตรฐาน ดังภาพ


เราสามารถเปลี่ยนแปลงรูปแบบการใช้งาน ได้ตามการใช้งานของเราขณะนั้น เช่น จะให้แสดงเฉพาะส่วนของ Command Window สามารถทำได้โดย เลือกเมนู Desktop + Desktop Layout + Command Window only
ผมจะขอกล่าวถึงคำสั่งที่จะใช้งานเบื้องต้นกันเลยนะครับ ส่วนประกอบต่างๆ สามารถหาอ่านได้ในคู่มือทั่วไป ผมจะกล่าวถึงคำสั่งการใช้งานเลยนะครับ และจะแนะนำในส่วนที่คู่มือทั่วไปไม่ได้กล่าวถึง แต่จำเป็นต้องใช้งาน

คำสั่งเบื้องต้นประกอบด้วยคำสั่งต่อไปนี้
>> quit หรือ exit เลิกการทำงานของ MATLAB
>> clc ลบข้อความที่บรรจุอยู่ใน Command Window แต่ไม่มีการลบค่าตัวแปรใดๆ
>> clg ล้างข้อมูลภาพที่แสดงใน figure>> clf ลบรูปภาพที่บรรจุอยู่ใน Graphic Window
>> clear ลบตัวแปรทุกตัวออกจากหน่วยความจำ
>> save เป็นการรวบรวมค่าตัวแปรทุกตัวที่มีอยู่ในขณะนั้นบันทึกลงบน disk
>> หากต้องการยกเลิกการคำนวณในขณะที่ MATLAB ยังทำการคำนวณไม่เรียบร้อยให้กดแป้น Ctrl และ c พร้อมกัน
>> Ctrl-p ใช้เรียกคำสั่งที่ทำไปในครั้งที่ผ่านมา
>> Ctrl-n ใช้เรียกคำสั่งที่สั่งหลังจากคำสั่งที่กำลังสั่งอยู่
>> Ctrl-f เลื่อนไปทางขวา 1 ตัวอักษร
>> Ctrl-b เลื่อนไปทางซ้าย 1 ตัวอักษร
>> Del หรือ Backspace ลบตัวอักษรครั้งละ 1 ตัว
>> Ctrl-l เลื่อนไปทางซ้าย 1 คำCtrl-r เลื่อนไปทางขวา 1คำ
>> Ctrl-a หรือแป้น Home เลื่อนไปที่ตัวอักษรแรกของบรรทัดแป้น
>> End เลื่อนไปที่ตัวอักษรสุดท้ายของบรรทัด
>> Ctrl-k ลบทุกตัวอักษรจากจุดที่อยู่ไปถึงตัวสุดท้ายของบรรทัด
วันนี้คงขอเขียนแค่นี้ก่อนนะครับ เดี๋ยวจะเข้ามาแนะนำการใช้งานต่อไป


matlab คืออะไร


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

MATLAB เป็นโปรแกรมคอมพิวเตอร์สมรรถนะสูง เพื่อใช้ในการคำนวณทางเทคนิค MATLABได้รวมการคำนวณ การเขียนโปรแกรมและการแสดงผลรวมกันอยู่ในตัวโปรแกรมเดียวได้อย่างมีประสิทธิภาพ และอยู่ในลักษณะที่ง่ายต่อการใช้งาน นอกจากนี้ลักษณะของการเขียนสมการในโปรแกรมก็จะเหมือนการเขียนสมการคณิตศาสตร์ งานที่ทั่วไปที่ใช้ MATLAB เช่น การคำนวณทั่วไปการสร้างแบบจำลองและการทดสอบแบบจำลอง การวิเคราะห์ข้อมูล การแสดงผลในรูปกราฟโดยทั่วไปและกราฟทางด้านทางวิทยาศาสตร์และวิศวกรรม สามารถสร้างโปรแกรมในลักษณะที่ติดต่อกับผู้ใช้ทางกราฟฟิกส์ การทำงานของ MATLAB จะสามารถทำงานได้ทั้งในลักษณะของการติดต่อโดยตรง(Interactive)คือการเขียนคำสั่งเข้าไปทีละคำสั่ง เพื่อให้ MATLAB ประมวลผล หรือสามารถที่จะรวบรวมชุดคำสั่งเป็นโปรแกรมก็ได้

ข้อสำคัญ
อย่างหนึ่งของ MATLAB ก็คือข้อมูลทุกตัวจะถูกเก็บในลักษณะของ arrayคือในแต่ละตัวแปรจะได้รับการแบ่งเป็นส่วนย่อยเล็กๆขึ้น ซึ่งการใช้ตัวแปรเป็น array ในMATLABไม่จำเป็นที่จะต้องจอง dimension เหมือนกับการเขียนโปรแกรมในภาษาขั้นต่ำทั่วไป ซึ่งทำให้สามารถที่จะแก้ปัญหาของตัวแปรที่อยู่ในลักษณะของ matrix และ vector ได้โดยง่าย

สำหรับในปัจจุบันนี้ MATLAB ได้ถูกเขียนขึ้นโดยใช้ภาษา C โดยบริษัท MathWorks ภายใต้โครงการ LAPACK และ ARPACK ถ้าหากเราจะเริ่มนับจากโปรแกรมที่ออกเผยแพร่เป็นครั้งแรกที่มีผู้ร่วมเขียนโปรแกรมไม่กี่คน จนกระทั่งทุกวันนี้มีทีมงานขนาดใหญ่ที่ทำงานในการพัฒนาโปรแกรมให้มีประสิทธิภาพสูงขึ้น ซึ่งทำให้ทุกวันนี้ MATLAB เป็นโปรแกรมที่สุดยอดในการคำนวณที่คำนวณด้าน matrixสำหรับงานทางวิทยาศาสตร์และวิศวกรรมโปรแกรมหนึ่ง
(ภาพประกอบจาก internet)


ถ้าหากจะสรุปโดยรวมแล้วความสามารถหลักของ MATLAB ที่ทำให้เป็นโปรแกรมที่เหมาะสมกับการทำงานทางด้านวิศวกรรมด้วยเหตุผลดังนี้

1. MATLAB เป็นโปรแกรมเพื่อการคำนวณและแสดงผลได้ทั้งตัวเลขและรูปภาพซึ่งมีประสิทธิภาพสูง โดยทางบริษัท Math Works ผู้ผลิตได้ให้นิยามว่าเป็น High-PerformanceNumeric Computation and Visualization Software

2. MATLAB จะควบคุมการทำงานด้วยชุดคำสั่งและยังสามารถรวบรวมชุดคำสั่งเป็นโปรแกรมได้อีกด้วย

3. MATLAB มี function ที่เหมาะสมกับงานทางวิศวกรรมพื้นฐานมากมาย นอกจากนั้นผู้ใช้ยังสามารถเขียน function ขึ้นมาใหม่โดยสามารถใช้ประโยชน์จาก function ที่มีอยู่แล้วเพื่อให้เหมาะสมกับงานของผู้ใช้แต่ละกลุ่ม

4. ลักษณะการเขียนโปรแกรมใน MATLAB จะใกล้เคียงการเขียนสมการทางคณิตศาสตร์ที่เราคุ้นเคยจึงง่ายกว่าการเขียนโปรแกรมโดยใช้ภาษาชั้นสูงเช่น C, FORTRAN หรืออื่นๆ

5. MATLAB มีความสามารถในการเขียนกราฟและรูปภาพทั้ง 2 มิติและ 3 มิติได้อย่างมีประสิทธิภาพ

6. MATLAB สามารถทำ Dynamic Link กับโปรแกรมอื่นๆได้ไม่ว่าจะเป็น Word, Excel หรืออื่นๆที่ร่วมทำงานอยู่บน windows7. MATLAB มี toolbox หรือชุด function พิเศษสำหรับผู้ใช้ที่ต้องการใช้งานเฉพาะทางหรืองานด้านวิศวกรรมขั้นสูงอื่นๆ