More Related Content Similar to 9789740332985 (14) 97897403329851. บทที่ 1
ความรู้พื้นฐาน MATLAB
1.1 บทนํา
MATLAB เป็นโปรแกรมที่ได้รับการออกแบบมาเพื่อใช้ในการคํานวณทางคณิตศาสตร์
โดยเฉพาะอย่างยิ่งกับงานทางวิศวกรรมและวิทยาศาสตร์ โครงสร้างพื้นฐานการคํานวณของ
โปรแกรม MATLAB อยู่ในรูปของเวกเตอร์หรือเมทริกซ์ ซึ่งก็เป็นที่มาของชื่อโปรแกรมด้วย กล่าวคือ
MATLAB เป็นคําย่อของคําสองคําในภาษาอังกฤษคือ MATrix LABoratory จุดเด่นของโปรแกรม
MATLAB คือการที่มีชุดคําสั่งจํานวนมากสําหรับใช้ในการประมวลผลข้อมูลที่บรรจุอยู่ในเมทริกซ์
ครอบคลุมทฤษฎีทางคณิตศาสตร์ทั้งที่เป็นพื้นฐานและการประยุกต์อย่างกว้างขวาง ที่สําคัญเรา
สามารถใช้งานโปรแกรมในการแก้ปัญหาต่าง ๆ ได้อย่างรวดเร็วและมีประสิทธิภาพสูงมาก
นอกจากนี้ MATLAB ยังได้พัฒนา GUI (Graphical User Interface) ที่เป็นระบบระเบียบทําให้การ
สร้างโปรแกรมประยุกต์เฉพาะตามที่ผู้ใช้ต้องการสามารถทําได้โดยง่าย คุณสมบัติที่ดีเยี่ยมเหล่านี้ทํา
ให้ในปัจจุบันมีการนํา MATLAB มาใช้เป็นเครื่องมือในการเรียนการสอนหรือนําไปประยุกต์ใช้กับ
งานวิจัยอย่างแพร่หลาย
การเรียนรู้วิธีใช้งานโปรแกรม MATLAB ในระดับพื้นฐานจัดว่าเป็นเรื่องที่ไม่ยากนัก และ
โดยทั่วไปจะพบว่านิสิตนักศึกษาหรือนักวิชาการสามารถใช้งาน MATLAB ขั้นพื้นฐานได้ทันทีหลังจาก
ที่ได้ทดลองใช้งานด้วยตนเองตามตัวอย่างที่อธิบายในบทที่ 1 นี้ ดังนั้น รูปแบบการอธิบายในบทนี้จึง
เน้นการใช้ตัวอย่างเป็นหลัก เพื่อให้ผู้อ่านสามารถทราบถึงแนวทางการใช้ประโยชน์จากโปรแกรม
MATLAB ได้อย่างรวดเร็วและมีประสิทธิผล แนวทางการอ่านเพื่อทําความเข้าใจในบทนี้จึง
2. 2 MATLAB การประยุกต์ใช้งานทางวิศวกรรมไฟฟ้า
ตรงไปตรงมา คือ ให้ผู้เรียนทดลองพิมพ์คําสั่งตามตัวอย่างไปทีละบรรทัดจนครบทั้งบท เพราะการ
ลงมือพิมพ์คําสั่งเองเป็นปัจจัยหลักที่จะช่วยให้ผู้อ่านสามารถทําความคุ้นเคยและเข้าใจหลักการ
พื้นฐานของ MATLAB ได้อย่างรวดเร็ว เนื้อหาที่จะกล่าวถึงต่อไปมีการเรียงลําดับดังนี้ การใช้คําสั่ง
สําหรับการสร้างตัวแปรในรูปของเวกเตอร์หรือเมทริกซ์ ฟังก์ชันพื้นฐานสําหรับการสร้างเมทริกซ์
ฟังก์ชันการวาดกราฟ การบวกลบคูณหารอย่างง่าย และการกําหนดรูปแบบการแสดงผลตัวเลข
1.2 การสร้างตัวแปรเวกเตอร์และเมทริกซ์
การคํานวณต่าง ๆ ในโปรแกรม MATLAB อยู่บนพื้นฐานของตัวแปรที่กําหนดในรูปของ
เวกเตอร์ (vector) และเมทริกซ์ (matrix) เป็นหลัก ดังนั้น การเรียนรู้โปรแกรม MATLAB เพื่อให้
สามารถใช้งานได้อย่างมีประสิทธิภาพ ผู้ใช้งานจําเป็นต้องเข้าใจถึงหลักการและวิธีการสร้างตัวแปร
เหล่านี้ให้ถ่องแท้ก่อน
ในลําดับแรกจะแสดงวิธีสร้างตัวแปร x ที่เป็นเวกเตอร์แถว (row vector) โดยใช้คําสั่ง
ต่อไปนี้
>> x = [1 2 3 4]
x =
1 2 3 4
สังเกตว่าสมาชิกหรือเอลิเมนต์ (element) แต่ละตัวในเวกเตอร์ x จะเขียนแยกจากกันโดยใช้ช่องว่าง
หรืออาจจะใช้เครื่องหมาย “,” ได้ด้วยเช่นกัน หากต้องการเมทริกซ์ทรานส์โพสของ x ก็สามารถทํา
ได้โดยง่าย ดังนี้
>> y = x'
y =
1
2
3
4
ซึ่งจะได้ตัวแปร y ขึ้นมาใหม่ที่เป็นเมทริกซ์ทรานส์โพสของ x ดังที่แสดงข้างบน
3. บทที่ 1 ความรู้พื้นฐาน MATLAB 3
หากต้องการกําหนดเมทริกซ์ที่มีขนาด 3x4 ขึ้นมาใช้งาน ให้กระทําดังนี้
>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A =
1 2 3 4
5 6 7 8
9 10 11 12
สังเกตว่าเครื่องหมาย “;” ใช้สําหรับระบุว่าเป็นจุดสิ้นสุดของแต่ละแถว ถึงตรงนี้เราอาจจะใช้คําสั่ง
who หรือ whos เพื่อขอดูตัวแปรทั้งหมดที่ได้มีการสร้างขึ้นในหน้าต่างที่ใช้งานอยู่หรือที่เรียกว่า
พื้นที่ทํางาน (workspace) หากใช้คําสั่ง who ก็จะได้ผลเป็น
>> who
Your variables are:
A x y
หรือถ้าต้องการทราบขนาดหรือหน่วยความจําของตัวแปรแต่ละตัวด้วย ให้ใช้คําสั่ง whos แทน
>> whos
Name Size Bytes Class
A 3x4 96 double array
x 1x4 32 double array
y 4x1 32 double array
Grand total is 20 elements using 160 bytes
ในกรณีที่ต้องการทราบขนาดของตัวแปรตัวใดตัวหนึ่ง ให้ใช้คําสั่ง size(x) ยกตัวอย่างเช่น
>> size(x)
ans =
1 4
4. 4 MATLAB การประยุกต์ใช้งานทางวิศวกรรมไฟฟ้า
ซึ่งบอกเราว่าเมทริกซ์ x มีขนาดเท่ากับ 1x4 คือมีเพียงแถวเดียวและมีสี่คอลัมน์ สังเกตว่าคําสั่งนี้ไม่มี
การนําค่าของฟังก์ชัน size(x) ไปใส่ลงในตัวแปรใด ๆ ดังในกรณีก่อนหน้า ในกรณีเช่นนี้ MATLAB
จะบรรจุผลลัพธ์ที่ได้ลงในตัวแปรที่มีชื่อเฉพาะว่า ans เสมอ
เราสามารถอ้างถึงหรือกําหนดค่าให้แก่สมาชิกแต่ละตัวในเมทริกซ์ได้ดังนี้
>> x = A(2,3)
x =
7
คําสั่งนี้ให้นําค่าของสมาชิกในแถวที่สองและคอลัมน์ที่สามของเมทริกซ์ A ไปบรรจุลงในตัวแปร x ที่
ได้ประกาศขึ้นใหม่
แต่หากต้องการสมาชิกทั้งแถวจากเมทริกซ์ A เช่น ต้องการสมาชิกทั้งหมดในแถวที่ 3 ไปเก็บลงใน
เวกเตอร์ y ที่กําหนดขึ้นมาใหม่ให้สั่งดังนี้
>> y = A(3,:)
y =
9 10 11 12
สังเกตว่ามีการใช้เครื่องหมาย “:” เพื่อระบุช่วงของคอลัมน์ว่าให้นําสมาชิกของทุกคอลัมน์มาใช้
เพื่อให้เห็นภาพการใช้งานเครื่องหมาย “:” ที่ชัดเจนขึ้น จะยกตัวอย่างคําสั่งต่อไปนี้ซึ่งดึงสมาชิกใน
แถวที่สองของเมทริกซ์ A เฉพาะในคอลัมน์ที่ 1 ถึง 3 เท่านั้น
>> y = A(2,1:3)
y =
5 6 7
จะเห็นว่าตัวเลขที่อยู่ก่อนหน้าและหลังเครื่องหมาย “:” เป็นตัวระบุช่วงของคอลัมน์ที่ต้องการ
สําหรับตัวอย่างที่ซับซ้อนขึ้นอีกเล็กน้อยก็คือการดึงสมาชิกในแถวที่หนึ่งและสองโดยที่สนใจเฉพาะ
สมาชิกในคอลัมน์ที่สองและสามเท่านั้น ซึ่งจะใช้คําสั่งดังนี้
5. บทที่ 1 ความรู้พื้นฐาน MATLAB 5
>> y = A(1:2,2:3)
y =
2 3
6 7
หากต้องการเฉพาะสมาชิกตั้งแต่คอลัมน์ที่สองไปจนถึงคอลัมน์สุดท้ายในแถวที่หนึ่งเท่านั้นให้ใช้คําสั่ง
ดังนี้
>> y = A(1,2:end)
y =
2 3 4
ตัวอย่างก่อนหน้านี้ล้วนแล้วแต่กําหนดช่วงของแถวหรือคอลัมน์ที่ต่อเนื่องกันทั้งสิ้น ในกรณีที่ต้องการ
ดึงสมาชิกในแถวหรือคอลัมน์ที่ไม่ติดกันออกมาหรือจะดึงซ้ํามากกว่าหนึ่งครั้ง เช่น ต้องการอ้างถึง
สมาชิกในคอลัมน์ที่หนึ่ง คอลัมน์ที่สี่ และคอลัมน์ที่สี่อีกครั้ง ให้ใช้คําสั่งดังนี้
>> y = A(:,[1 4 4])
y =
1 4 4
5 8 8
9 12 12
คําสั่งการลบแถวหรือคอลัมน์ของเมทริกซ์ก็น่าสนใจเช่นกัน และสามารถทําได้โดยใช้คําสั่งดังนี้
>> A(1,:) = [ ]
A =
5 6 7 8
9 10 11 12
คําสั่งข้างบนนี้เป็นการลบสมาชิกทั้งหมดในแถวที่หนึ่งของเมทริกซ์ A นั่นเอง
6. 6 MATLAB การประยุกต์ใช้งานทางวิศวกรรมไฟฟ้า
และถ้าจะลบสมาชิกทั้งหมดในคอลัมน์ที่สี่ของเมทริกซ์ A ให้กระทําดังนี้
>> A(:,4) = [ ]
A =
5 6 7
9 10 11
ในโปรแกรม MATLAB การนําเมทริกซ์หลายชุดมาประกอบกันให้ได้เป็นเมทริกซ์ที่มีขนาดใหญ่ขึ้นก็
สะดวกมาก ยกตัวอย่างเช่น
>> A = [0 0; 1 1; 2 2];
>> B = [3 3; 4 4; 5 5];
>> C = [A B]
C =
0 0 3 3
1 1 4 4
2 2 5 5
เป็นคําสั่งการต่อเมทริกซ์ A และ B ในแนวนอนและได้เป็นเมทริกซ์ C ที่มีขนาดใหญ่ขึ้น สังเกตว่า
เครื่องหมาย “;” ที่ปิดท้ายคําสั่งในสองบรรทัดแรกเป็นการบอกโปรแกรม MATLAB ว่าไม่ต้อง
แสดงผลออกบนจอภาพ เครื่องหมายนี้เป็นประโยชน์มากหากเราไม่ต้องการเห็นผลลัพธ์ของคําสั่ง
บางบรรทัด สําหรับการต่อเมทริกซ์ในแนวตั้งก็สามารถกระทําได้เช่นกันดังนี้
>> C = [A;B]
C =
0 0
1 1
2 2
3 3
7. บทที่ 1 ความรู้พื้นฐาน MATLAB 7
4 4
5 5
คําสั่งการสร้างเวกเตอร์อีกรูปแบบหนึ่งที่เป็นประโยชน์และมีการใช้งานบ่อยครั้งมาก คือ การสร้าง
เวกเตอร์ที่สมาชิกมีค่าเพิ่มขึ้นหรือลดลงอย่างเป็นระบบ เช่น ต้องการสร้างเวกเตอร์ขนาด 1x1,000
โดยบรรจุตัวเลขจํานวนเต็มเรียงลําดับตั้งแต่ 1 ถึง 1,000 การสร้างตัวแปรดังกล่าวนี้ด้วยการพิมพ์
โดยตรงด้วยมือต้องใช้เวลานานมาก ในกรณีเช่นนี้ผู้ใช้สามารถพิมพ์คําสั่งสั้น ๆ ดังต่อไปนี้ได้ทันที
>> D = 1:1:1000;
ในที่นี้หากเราเจตนาใส่เครื่องหมาย “;” ปิดท้าย เพื่อมิให้โปรแกรม MATLAB แสดงผลค่าที่บรรจุอยู่
ในเวกเตอร์ D ซึ่งมีสมาชิกจํานวนมากถึง 1,000 ค่า คําสั่งในลักษณะนี้สามารถนํามาใช้งานได้อย่าง
กว้างขวาง เช่น ต้องการเวกเตอร์แถวที่บรรจุตัวเลขจํานวนคู่เรียงตั้งแต่ 10 ถึง 20 ให้ใช้คําสั่งดังนี้
>> D = 10:2:20
D =
10 12 14 16 18 20
หากต้องการเวกเตอร์แถวที่บรรจุตัวเลขเรียงจากมากไปน้อย เริ่มต้นตั้งแต่ 20 ไปจนถึง -20 โดย
ลดลงทีละ 5 ให้ใช้คําสั่งดังนี้
>> D = 20:-5:-20
D =
20 15 10 5 0 -5 -10 -15 -20
ในกรณีที่ตัวเลขที่เพิ่มขึ้นแต่ละครั้งมีค่าเท่ากับหนึ่งเราสามารถเขียนคําสั่งให้สั้นลงได้เป็น
>> D = 5:8
D =
5 6 7 8
8. 8 MATLAB การประยุกต์ใช้งานทางวิศวกรรมไฟฟ้า
1.3 ฟังก์ชันพื้นฐานสําหรับการสร้างเมทริกซ์
หัวข้อที่ผ่านมากล่าวถึงการสร้างตัวแปรในรูปของเวกเตอร์หรือเมทริกซ์อย่างง่ายและ
ตรงไปตรงมา อย่างไรก็ตาม ในการประยุกต์ใช้งานโดยทั่วไปมักจะมีการสร้างเมทริกซ์ที่มีค่าเฉพาะ
หรือมีรูปลักษณ์ที่เป็นมาตรฐาน เช่น ต้องการสร้างเมทริกซ์ที่มีค่าเป็นศูนย์ทั้งหมดขนาด mxn โดย
m และ n มีขนาดใหญ่มาก หากสร้างเมทริกซ์ที่ว่านี้ด้วยวิธีการพิมพ์ค่าโดยตรงตามรูปแบบที่ได้
อธิบายในส่วนที่แล้วจะเสียเวลามากและอาจเกิดข้อผิดพลาดได้ง่าย ดังนั้น ใน MATLAB จึงได้เตรียม
ฟังก์ชันพื้นฐานจํานวนหนึ่งไว้สําหรับใช้งาน
ตารางที่ 1.1 ฟังก์ชันพื้นฐานสําหรับสร้างเมทริกซ์
zeros เมทริกซ์ที่มีสมาชิกเป็น 0 ทั้งหมด
ones เมทริกซ์ที่มีสมาชิกเป็น 1 ทั้งหมด
eye เมทริกซ์เอกลักษณ์ (identity matrix)
diag เมทริกซ์จัตุรัสที่มีค่าในแนวทแยงมุมตามที่กําหนด
triu เมทริกซ์ที่มีค่าเฉพาะในส่วนของสามเหลี่ยมด้านบน
tril เมทริกซ์ที่มีค่าเฉพาะในส่วนของสามเหลี่ยมด้านล่าง
rand เมทริกซ์ที่มีสมาชิกเป็นจํานวนสุ่ม
hilb เมทริกซ์ฮิลเบิร์ต (Hilbert matrix)
magic เมทริกซ์จัตุรัสที่มีผลรวมของค่าในแถว คอลัมน์และแนวทแยงมุมเท่ากัน
hadamard เมทริกซ์ Hadamard
vander เมทริกซ์ Vandermonde
toeplitz เมทริกซ์ Toeplitz
9. บทที่ 1 ความรู้พื้นฐาน MATLAB 9
ฟังก์ชัน zero(m,n)
ฟังก์ชัน zero(m,n) ให้กําเนิดเมทริกซ์ขนาด mxn ที่มีสมาชิกเป็นศูนย์ทั้งหมด ยกตัวอย่าง
เช่น
>> zeros(2,5)
ans =
0 0 0 0 0
0 0 0 0 0
ฟังก์ชัน ones(m,n)
ฟังก์ชัน ones(m,n) คล้ายคลึงกับคําสั่ง zero(m,n) มาก เพียงแต่เมทริกซ์ที่ได้จะมีสมาชิก
เป็นหนึ่งทั้งหมด ยกตัวอย่างเช่น
>> ones(3,4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
ฟังก์ชัน eye(n)
ฟังก์ชัน eye(n) ให้กําเนิดเมทริกซ์จัตุรัสที่มีสมาชิกเป็นศูนย์ทั้งหมดยกเว้นสมาชิกในแนว
ทแยงมุมที่มีค่าเป็นหนึ่ง ฉะนั้น เมทริกซ์ที่ได้คือเมทริกซ์เอกลักษณ์นั่นเอง ยกตัวอย่างเช่น
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
10. 10 MATLAB การประยุกต์ใช้งานทางวิศวกรรมไฟฟ้า
แท้จริงแล้วฟังก์ชัน eye สามารถให้กําเนิดเมทริกซ์ที่ไม่ใช่เมทริกซ์จัตุรัสได้ด้วย การใช้งานเป็นดังนี้
>> eye(2,4)
ans =
1 0 0 0
0 1 0 0
สังเกตว่าฟังก์ชันสามารถมีรูปแบบการใช้ที่ต่างกันได้มากกว่าหนึ่งรูปแบบ โดยขึ้นอยู่กับจํานวนและ
รายละเอียดของอาร์กิวเมนต์ที่ป้อนให้แก่ฟังก์ชัน ใน MATLAB มีคําสั่ง help ที่ใช้สําหรับอธิบาย
รายละเอียดรูปแบบและการใช้งานของฟังก์ชัน เช่น เราต้องการทราบวิธีการใช้งานฟังก์ชัน eye ให้
พิมพ์คําสั่งดังนี้
>> help eye
EYE Identity matrix.
EYE(N) is the N-by-N identity matrix.
EYE(M,N) or EYE([M,N]) is an M-by-N matrix with 1's on
the diagonal and zeros elsewhere.
EYE(SIZE(A)) is the same size as A.
See also ONES, ZEROS, RAND, RANDN.
จะเห็นว่าฟังก์ชัน eye มีการใช้งานได้สองลักษณะคือ eye(n) และ eye(m,n) สําหรับฟังก์ชัน zeros
หรือ ones ก็เช่นเดียวกันมีรูปแบบการใช้งานได้หลายลักษณะ หากลองใช้คําสั่ง help เพื่อดู
วิธีการใช้ฟังก์ชัน zeros หรือ ones จะพบว่าฟังก์ชันทั้งสองสามารถใช้สร้างเมทริกซ์ที่มีมากกว่าสอง
มิติได้ ยกตัวอย่างเช่น