ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
MATLAB Basics charturong.ee.engr.tu.ac.th/CN208
ดร.จาตุรงค์ ตันติบัณฑิต ภาควิชาวิศวกรรมไฟฟ้าและคอมพิวเตอร์ มหาวิทยาลัยธรรมศาสตร์ เอกสารประกอบการสอนนี้จัดทำโดย ดร.ทรงยศ นาคอริยกุล
2
Special Values MATLAB มีตัวแปรพิเศษซึ่งเก็บค่าไว้โดยอัตโนมัติ ไม่ต้องมีการกำหนด (initialize) จากผู้ใช้ ตัวแปรเหล่านี้ได้แก่ Function Purpose pi i, j Inf NaN clock date eps ans เก็บค่า เก็บค่าจำนวนเชิงซ้อน ค่าอินฟินิตี้ เช่น การหารตัวเลขด้วย 0 Not-a-Number เช่น การหาร 0 ด้วย 0 เก็บค่าของ ปี เดือน วัน ชั่วโมง นาที วินาที ในขณะนั้นใน row vector เก็บข้อมูลของวันในรูปแบบ char strings เช่น 23-Nov-2007 ~2.22×10-16 ค่าแตกต่างที่ต่ำสุดของสองตัวเลขในคอมพิวเตอร์ ตัวแปรที่ใช้เก็บผลลัพธ์ของ expression
3
ค่าตัวแปรพิเศษสามารถถูกเขียนทับหรือ overwritten ได้โดยผู้ใช้ ยกตัวอย่างเช่น
>> area = pi*2^2; >> pi = 1; ในคำสั่งบรรทัดแรก ค่า area คือ เพราะค่า pi คือ แต่ในคำสั่งบรรทัดที่สาม ค่า area คือ 4 เพราะค่า pi ถูกเขียนทับเป็น 1 ในบรรทัดที่สอง คำแนะนำ: ไม่ควรเขียนทับหรือให้ค่าใหม่กับตัวแปรพิเศษ เพราะว่า จะเป็นการยากแก่การเรียกค่าเดิมกลับ และ ในบางทีจะเป็น bugs ที่หายาก
4
Changing the Default Format
MATLAB โดยปกติจะแสดงค่าของตัวเลขกับจุดทศนิยม 4 ตำแหน่ง หากผู้ใช้ต้องการเปลี่ยนการแสดงค่า ก็สามารถทำได้ด้วยการใช้คำสั่ง format ซึ่งมีคำสั่งดังนี้ Format Command Results Example format short format long format short e format short g format long e format long g 4 digits after decimal (default format) 14 digits after decimal 5 digits plus exponent 5 total digits with or without exponential 15 digits plus exponent 15 total digits with or without exponent 1.2346e+001 12.346 e+001
5
The disp function disp(x) ฟังก์ชั่นใช้แสดงข้อมูลที่เป็น array บนหน้าจอคอมพิวเตอร์โดยไม่แสดงชื่อของ array โดยที่ x เป็นได้ทั้งข้อมูลตัวเลขหรือตัวอักษร (text string) ฟังก์ชั่น disp ส่วนมากใช้ร่วมกับฟังก์ชั่น num2str (ฟังก์ชั่นนี้เปลี่ยนตัวเลขเป็น string หรือตัวหนังสือ) เพื่อจะแสดงข้อความในหน้าต่าง command ยกตัวอย่างเช่น >> str = ['The value of pi = ' num2str(pi)]; >> disp(str) MATLAB จะแสดงผลบนหน้าจอเป็น The value of pi =
6
The fprintf Function fprintf ฟังก์ชั่นใช้แสดงผลบนหน้าจอเช่นเดียวกับ disp แต่สามารถแสดงผลได้กว้างและซับซ้อนกว่า disp fprintf มีแบบฟอร์มคือ fprintf(format, data) โดยที่ format เป็นข้อมูลตัวอักษรแบบ string และ data คือตัวเลขหรือ array ที่ต้องการแสดงผล ใน format จะมีตัวอักษรพิเศษซึ่งใช้แสดงข้อมูลของ data เช่น >>fprintf('The value of pi is %6.2f \n', pi) MATLAB จะแสดงผลบนหน้าจอเป็น The value of pi is 3.14 %6.2f บ่งบอกว่าข้อมูลใน data เป็นจำนวนจริง (floating point) และควรแสดงเป็นข้อมูลแบบอักษรที่มี 6 ตัวอักษร (char) รวมทั้งตัวเลขหลังจุดทศนิยม 2 ตำแหน่ง
7
Special Characters in fprintf Format Strings
ตัวอย่างของตัวอักษรพิเศษที่ใช้ใน format ของคำสั่ง fprintf มีดังนี้ Format String Results %d %e %f \n \t Display value as an integer Display value in exponential format Display value in floating point format Skip to a new line Horizontal tab
8
The input Function เวลาที่ผู้เขียนโปรแกรมต้องการให้ผู้ใช้โปรแกรมป้อนข้อมูลผ่านทางคีย์บอร์ดให้ใช้คำสั่ง input ซึ่งคำสั่ง input จะแสดงเครื่องหมาย prompt บนหน้าจอเพื่อรอรับคำสั่งจากผู้ใช้ ยกตัวอย่างเช่น >> in1 = input(‘Enter data: '); Enter data: ซึ่งในตัวอย่างนี้ ผู้ใช้ใส่ข้อมูล 1.23 ผ่านทางแป้นคีย์บอร์ด ตัวแปร in1 จะเก็บค่า 1.23 ซึ่งเป็นข้อมูลตัวเลข (double) หากต้องการที่จะเก็บเป็นข้อมูลตัวอักษร (character string) ให้ใช้คำสั่ง >> in2 = input(‘Enter data: ', 's'); ซึ่งจะเก็บข้อมูลเป็นแบบตัวอักษรในตัวแปร in2 เป็นต้น
9
Array and Matrix Operations
Array operations คือการคำนวณระหว่าง arrays ในรูปแบบสมาชิกต่อสมาชิก (element-by-element basis) ซึ่งขึ้นกับตำแหน่งของสมาชิกในเมทริกซ์ ซึ่งจำนวนแถวกับคอลัมน์ของทั้ง 2 เมทริกซ์จำเป็นต้องเท่ากัน เช่น ในบางกรณี เราสามารถใช้ array operation ระหว่าง array กับ จำนวนจริง (scalar) เช่น Matrix operations คือการคำนวณในแบบพีชคณิตเชิงเส้น (linear algebra) เช่นการคูณในแบบเมทริกซ์ ตัวอย่างได้แก่
10
MATLAB ใช้เครื่องหมายพิเศษเพื่อแยกระหว่าง array operations กับ matrix operations โดยส่วนมาก array operations จะมีเครื่องหมาย จุด ก่อนเครื่องหมายคณิตศาสตร์ (ยกตัวอย่าง เช่น .*) ข้อแตกต่างระหว่าง array operations กับ matrix operations สามารถแสดงได้โดยตัวอย่างต่อไปนี้
11
Common Array and Matrix Operations
MATLAB form Comments Array addition Array subtraction Array multiplication Matrix multiplication Array right division Array left division Matrix right division Matrix left division Array exponentiation a + b a – b a .* b a * b a ./ b a .\ b a / b a \ b a .^ b Array addition and matrix addition are identical Array subtraction and matrix subtraction are identical Element-by-element multiplication of a and b. Both arrays must be the same shape, or one of them must be scalar. Matrix multiplication of a and b. the number of columns in a must equal the number of rows in b. Element-by-element division of a and b: a(i,j)/b(i,j). Both arrays must be the same shape, or one of them must be scalar. Element-by-element division of a and b: b(i,j)/a(i,j). Both arrays must be the same shape, or one of them must be scalar Matrix division defined by a*inv(b) Matrix division defined by inv(a) * b Element-by-element exponentiation of a and b: a(i,j)^b(i,j) Both arrays must be the same shape, or one of them must be a scalar.
12
Example จงแก้สมการต่อไปนี้
สมการนี้สามารถเขียนในรูปเมทริกซ์ได้คือ AX = B โดยที่ โดยได้คำตอบคือ X = A-1B หรือ >> A \ B โดยใช้ MATLAB ซึ่งคำตอบก็คือ x = -6.3, y = 11.5, และ z = -3.5
13
Mathematical Functions
Description abs(x) acos(x) angle(x) asin(x) atan(x) cos(x) exp(x) log(x) [value, index] = max(x) [value, index] = min(x) mod(x,y) sin(x) sqrt(x) tan(x) Calculates |x| Calculates cos-1x Returns the phase angle of the complex value x, in radians Calculates sin-1x Calculates tan-1x Calculates cos x, with x in radians Calculates ex Calculates the natural logarithm logex Returns the max value in vector x, and the location of that value Returns the min value in vector x, and the location of that value Returns the remainder of x/y Calculates sin x, with x in radians Calculates the square root of x Calculates tan x, with x in radians
14
Rounding Functions Function Description ceil(x) fix(x) floor(x)
round(x) Rounds x to the nearest integer towards positive infinity: ceil(3.1) = 4 and ceil(−3.1) = −3 Rounds x to the nearest integer towards zero: fix(3.1) = 3 and fix(−3.1) = −3 Rounds x to the nearest integer towards minus infinity: floor(3.1) = 3 and floor(−3.1) = −4 Rounds x to the nearest integer: round(3.1) = 3 and round(−3.1) = −3
15
String Conversion Functions
Description char(x) double(x) int2str(x) num2str(x) str2num('s') Converts a matrix of numbers into a character string Converts a character string into a matrix of numbers Converts x into an integer character string Converts x into a character string Converts the string s into a numeric array
16
Introduction to Plotting
การวาดกราฟเพื่อนำเสนอผลการทดลองหรือผลงานวิจัยนับเป็นเรื่องจำเป็นอย่างมาก โปรแกรม MATLAB มีฟังก์ชั่นซึ่งง่ายต่อการใช้ในการวาดกราฟทั้งแบบ 2 มิติและ 3 มิติ ซึ่งในที่นี้เราจะพูดถึงฟังก์ชั่นบางฟังก์ชั่นซึ่งใช้ในการวาดกราฟแบบ 2 มิติดังนี้ plot area fill bar ezplot
17
The plot Function ฟังก์ชั่น plot(x,y) ใช้วาดกราฟ 2 มิติโดยที่เวกเตอร์ x ระบุตำแหน่งของจุดบนแกน x และ เวกเตอร์ y ใช้ระบุตำแหน่งของจุดบนแกน y โดยที่เวกเตอร์ x และ y ต้องมีขนาด (จำนวนสมาชิก) เท่ากัน ยกตัวอย่างเช่นหากเราต้องการวาดกราฟของฟังก์ชั่น y = x2-10x+15 โดยที่ค่า x เริ่มจาก 0 ถึง 10 ก็กระทำได้ดังนี้ >>x = 0:1:10; >>y = x.^2 – 10.*x + 15; >>plot(x,y) คำสั่งแรกสร้างตัวแปร x เป็นเวกเตอร์เริ่มจาก 0 ถึง 10 โดยใช้ colon operator คำสั่งที่สองสร้างตัวแปร y เป็นเวกเตอร์มีค่าตามสมการที่เรากำหนด (ใช้ array operation) คำสั่งที่สามใช้วาดกราฟ
18
MATLAB จะสร้างหน้าต่างใหม่สำหรับแสดงรูปภาพ (Figure Window) ซึ่งเป็นรูปภาพดังนี้
19
การเพิ่มชื่อและข้อมูลให้แก่รูปกราฟ
การเพิ่มชื่อกราฟ (title) และแกน x และ y ทำได้โดยการใช้ฟังก์ชั่น title, xlabel, และ ylabel ตามลำดับ ฟังก์ชั่นเหล่านี้ต้องใช้กับข้อมูลตัวอักษร (string) เสมอ >>title('Plot of y = x.^2 – 10.*x + 15‘); >>xlabel('x'); >>ylabel('y'); การเพิ่มเส้น grid ให้แก่รูปกราฟ ให้ใช้คำสั่ง grid on และหากต้องการเอาเส้น grid ออกให้ใช้คำสั่ง grid off >>grid on;
20
การนำแกน x และแกน y ออกจากกราฟก็ทำได้โดยการใช้คำสั่ง axis off และการเติมแกน x และแกน y กลับใส่รูปกราฟ ให้ใช้คำสั่ง axis on ในบางครั้งหากเราต้องการกำหนดขนาดของแกน x และแกน y เพื่อความสวยงามต่อการนำเสนอ เช่นหากเราต้องการแสดงแกน x โดยที่ x มีค่าจาก -5 ถึง 15 และ แกน y จาก y มีค่า -15 ถึง 20 ให้ใช้คำสั่ง >>axis([ ]) ข้อสังเกตุคือขนาดของแกน x และ y เปลี่ยนไปแต่กราฟยังมีลักษณะเช่นเดิม นั่นคือ เส้นกราฟไม่เปลี่ยนแปลงไปตามขนาดของแกน x และ y
21
Multiple Plots การวาดหลายๆฟังก์ชั่นบนกราฟเดียวกันก็สามารถทำได้โดยการเขียนมากกว่า 1 คู่ของเวกเตอร์ในฟังก์ชั่น plot ยกตัวอย่าง หากเราต้องการวาดกราฟ f(x) = sin 2x และf(x) = cos 2x โดยมีจากค่า x จาก 0 ถึง 2*pi ทำได้โดยใช้คำสั่งต่อไปนี้ >>x = 0:0.1:2*pi; >>y1 = sin(2*x); >>y2 = cos(2*x); >>plot(x,y1,x,y2); คำสั่ง legend ใช้เพื่อระบุกราฟแต่ละกราฟบนรูปกราฟ (figure) ซึ่งใช้คำสั่งดังนี้ >>legend('sin 2x', 'cos 2x');
22
The hold Command ทุกๆครั้งที่คำสั่ง plot ถูกเรียกใช้ รูปกราฟ (figure) ใหม่จะถูกสร้างขึ้นและรูปกราฟจะถูกลบทิ้ง หากเราไม่ต้องการให้รูปกราฟเก่าถูกลบทิ้ง นั่นคือ เราต้องการให้คำสั่ง plot วาดกราฟใหม่ทับบนรูปกราฟเดิมก็ทำได้โดยการใช้คำสั่ง hold ซึ่งมีรูปแบบการใช้คือ >>hold on รูปกราฟใหม่จะถูกวาดทับลงบนรูปกราฟเก่า และ >>hold off รูปกราฟใหม่จะถูกสร้างใหม่ และรูปกราฟเก่าจะถูกลบทิ้ง คำสั่งต่อไปนี้จะแสดงผลเช่นเดียวกับคำสั่งในสไลด์ที่ 21 >>x = 0:0.1:2*pi; >>y1 = sin(2*x); >>y2 = cos(2*x); >>plot(x,y1); >>hold on; >>plot(x,y2); >>hold off;
23
Line Color, Marker Style, and Line Style
ผู้ใช้สามารถกำหนดสี(color)ของเส้นกราฟ ชนิดของมาร์กเกอร์(marker)ของจุดข้อมูลบนเส้นกราฟ และ รูปแบบ(style)ของเส้น ซึ่งผู้ใช้สามารถกำหนดรูปแบบเหล่านี้ได้ในฟังก์ชั่น plot ในรูปแบบของ attribute character string ซึ่งใช้ 3 ตัวอักษร โดยที่ตัวอักษรตัวแรกระบุสีของเส้นกราฟ ตัวอักษรตัวที่สองระบุชนิดของมาร์กเกอร์และตัวอักษรตัวสุดท้ายระบุรูปแบบของเส้น โดยเขียนคำสั่งได้ดังต่อไปนี้ >>x = 0:1:10; >>y = x.^2 – 10.*x + 15; >>plot(x,y,'rx--') โดยที่ r ใน 'rx--' แสดงเส้นสีแดง x แสดงจุดมาร์กเกอร์แบบตัว x และ - - แสดงเส้นแบบประ
24
Table of Plot Colors, Marker Styles, and Line Styles
Symbol Color Symbol Marker Symbol Linestyle b blue g green r red c cyan m magenta y yellow k black w white point o circle x cross plus sign * asterisk s square d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram solid line : dotted line dash-dot line dashed line
25
The area Function ฟังก์ชั่น area(x,y) ใช้งานเหมือนกับฟังก์ชั่น plot แต่ว่าพื้นที่ใต้กราฟจะถูกระบายสี มีรูปแบบการใช้งานดังนี้ >> x = 0:.1:5; >>y = exp(x); >>area(x,y)
26
The fill Function ฟังก์ชั่น ใช้เติมสีให้กับรูปหลายเหลี่ยมซึ่งมีจุดพิกัดระบุโดยคอลัมน์เวกเตอร์ x และ y โดยที่สีจะถูกระบุโดย c ยกตัวอย่างเช่น >> x = [0.4;0.9;0.9;0.4;-0.4;-0.9;-0.9;-0.4]; >>y = [0.9;0.4;-0.4;-0.9;-0.9;-0.4;0.4;0.9]; >>fill(x,y,'r'); >>text(0,0,'STOP','Color',[1 1 1],'FontSize',80,… 'FontWeight','bold','HorizontalAlignment','center')
28
The bar Function ฟังก์ชั่น bar(x,y) ใช้แสดงค่ากราฟเป็นรูปแท่ง (bar) ยกตัวอย่างเช่น >>x = -2:0.2:2; >>y = exp(-x.*x); >>bar(x,y) ซึ่งMATLAB จะแสดงผล ดังรูปทางขวามือ
29
The ezplot Function ในกรณีที่ผู้ใช้ไม่ต้องการเสียเวลาระบุตำแหน่งของเวกเตอร์ x และ y ผู้ใช้สามารถเรียกใช้ฟังก์ชั่น ezplot โดยที่ผู้ใช้จำเป็นต้องระบุสมการตัวเลขในรูปแบบ string expression เช่น >>istr = 'x^2 + y^2 - 4'; >>ezplot(istr, [ ]); แสดงรูปวงกลมจุดศุนย์กลางที่ (0,0) และมีรัศมีเป็น 2
30
การเขียน M-file ในเวลาที่โปรแกรมมีขนาดเล็กไม่กี่บรรทัด ผู้เขียนสามารถใส่คำสั่งที่หน้าต่าง command โดยตรง แต่เมื่อขนาดของโปรแกรมใหญ่ขึ้น การใส่คำสั่งทีละบรรทัดจะไม่เป็นการสะดวก เพราะฉะนั้น MATLAB ให้ผู้โปรแกรมเขียนคำสั่งทั้งหมดใน script file หรือที่เรียกว่า M-file แล้วโปรแกรม MATLAB จะอ่านจากไฟล์นี้เหมือนกับคำสั่งในหน้าต่าง command ในการสร้าง M-file ใหม่ สามารถทำได้โดยการเลือกไปที่ File New M-file ซึ่งจะสร้างหน้าต่างใหม่ขึ้นมาสำหรับให้ผู้ใช้ใส่คำสั่งในหน้าต่าง text editor ผู้ใช้สามารถ save ไฟล์เหล่านี้ซึ่งจะเป็น .m เพื่อใช้แก้ไขในอนาคตได้ ในเวลาที่จะผู้ใช้ต้องการให้ MATLAB อ่านไฟล์ หรือ run โปรแกรม ให้ผู้ใช้ไปเลือกที่ปุ่ม run หรือกดปุ่ม F5 หรือใส่ชื่อ m file นั้นที่หน้าต่าง command แล้วกด enter
31
การใส่ comment ใน M-file
ในการเขียนโปรแกรมที่ดี ผู้เขียนควรใส่ comment ให้ผู้ที่อ่านโปรแกรมเข้าใจในโปรแกรมได้ง่ายขึ้น ซึ่งทำได้โดยการใช้เครื่องหมาย % โดยที่ตัวอักษรที่ถูกเขียนหลังเครื่องหมาย % จะไม่ถูกอ่านโดย MATLAB ในหน้าต่าง command ยกตัวอย่างเช่น % example1.m % written by Songyot Nakariyakul disp('Hello, world'); Comment lines
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.