87
1 מחשב יישומי Matlab מבואMATLAB והנדסיי§ טכניי§ חישובי§ לביצוע המיועדת מתמטית תוכנה הינה. התוכנה נכתבה במקור, השבעי§ שנות בסו, ליניארית באלגברה בעיות לפתור כדי, ג§ ומכא© שמה משמעות MATrix-LABoratory . כגו© נוספות רבות אופציות התוכנה כוללת כיו§: כלי§ דיפרנציאליות במשוואות לטיפול, נתוני§ עיבוד, פולינומי§, מחרוזות, ועוד. עיבוד מאפשרת התוכנה גבוהה וויזואלית ברמה תוצאות והצגת נתוני§; דו גרפי§ יצירת ממדי§, ואנימציות ממדי§ תלת. נומרי התוכנה אופי, מאוד מוגבלת סימבוליי§ חישובי§ לביצוע והאפשרות. לת להוסי נית© וכנהTOOL-BOXES בקרה כגו© שוני§ בנושאי§ הפקודות אוצר של הרחבה המהווי§, אותות עיבוד, ועוד חלקיות דיפרנציאליות משוואות. ה של הפקודות חלו© נפתח לתוכנה הכניסה ע§ MATLAB . תתחיל זה בחלו© שנכתוב שורה כל בסימ©>> ) ה MATLAB אוטומטית מסמ©.( ש והמשתני§ הפעולות כל ישמרו זה¤ במס נגדיר ה של העבודה במרחב MATLAB ) ה WORKSPACE .( ה MATLAB של בשיטה עובד" מפרש" ) INTERPRETER ( , מקש על לחיצה לכ©RETURN ל תגרו§ MATLAB או הפקודה את לבצע האחרונה בשורה שנכתבו הפקודות רצ. פקודות של ארוכה סידרה לבצע מעוניני§ כאשר) תוכנית( מו¤ בעור אותה לכתוב מל¯) editor ( חיצוני. בפורמט השומר¤ עור בכל להשתמש נית©ASCII . גרסתMATLAB גרסת הינה עובדי§ אנו בהPC , פנימי¤ עור הכוללת. סיומת ע§ לשמור יש התוכניות אתfilename.m . במחשב עובדי§ כאשרPC צריכות התוכניות התוכנה נמצאת בה בספריה להישמרMATLAB א ל להגדיר ו MATLAB אחר חיפוש מסלול. נית© בפקודות להשתמשcd ו dir ההפעלה במערכת כמוDOS . ב תוכנית הרצת MATLAB ע מבוצעת" הפקודות בחלו© שמה כתיבת י) הסיומת ללאm .(

Matlab Book

Embed Size (px)

DESCRIPTION

Matlab Book

Citation preview

Page 1: Matlab Book

1

Matlab יישומי מחשב

מבוא

MATLABהינה תוכנה מתמטית המיועדת לביצוע חישובי טכניי והנדסיי .

ומכא ג , כדי לפתור בעיות באלגברה ליניארית, בסו שנות השבעי, במקור נכתבה התוכנהכלי : כיו כוללת התוכנה אופציות רבות נוספות כגו. MATrix-LABoratory משמעות שמה

התוכנה מאפשרת עיבוד . ועוד, מחרוזות, פולינומי, עיבוד נתוני, לטיפול במשוואות דיפרנציאליות . תלת ממדי ואנימציות, ממדייצירת גרפי דו; נתוני והצגת תוצאות ברמה וויזואלית גבוהה

וכנה נית להוסי לת. והאפשרות לביצוע חישובי סימבוליי מוגבלת מאוד, אופי התוכנה נומריTOOL-BOXESעיבוד אותות, המהווי הרחבה של אוצר הפקודות בנושאי שוני כגו בקרה ,

. משוואות דיפרנציאליות חלקיות ועוד

כל שורה שנכתוב בחלו זה תתחיל . MATLAB ע הכניסה לתוכנה נפתח חלו הפקודות של הנגדיר במס זה ישמרו כל הפעולות והמשתני ש). מסמ אוטומטיתMATLAB ה(<< בסימ

" מפרש" עובד בשיטה של MATLAB ה). WORKSPACE ה (MATLABבמרחב העבודה של ה)INTERPRETER( , לכ לחיצה על מקשRETURNתגרו ל MATLAB לבצע את הפקודה או

) תוכנית(כאשר מעוניני לבצע סידרה ארוכה של פקודות . רצ הפקודות שנכתבו בשורה האחרונהגרסת . ASCIIנית להשתמש בכל עור השומר בפורמט . חיצוני) editor(מל לכתוב אותה בעור מו

MATLAB בה אנו עובדי הינה גרסת PC ,הכוללת עור פנימי.

התוכניות צריכות PCכאשר עובדי במחשב . filename.mאת התוכניות יש לשמור ע סיומת נית . מסלול חיפוש אחרMATLAB ו להגדיר ל אMATLABלהישמר בספריה בה נמצאת התוכנה

.DOS כמו במערכת ההפעלה dir וcdלהשתמש בפקודות

).mללא הסיומת (י כתיבת שמה בחלו הפקודות " מבוצעת עMATLABהרצת תוכנית ב

Page 2: Matlab Book

2

פקודות ניהול קבציFile Management Functions Show present working directory or folder cd Return present working directory in p p=cd Change to directory or folder given by path cd path Same as cd chdir Same as cd path chdir path delete the M-file test.m delet test List all files in the cornet directory or folder dir Same as dir ls Return directory path to MATLAB executable program matlabroot Display or modify MATLAB’s search path path same as cd pwd Display the M-file test.m in the Command window type test Return a listing of all M-file test.m and MAT-files in the current directory or folder

what

Display the directory path to test.m which test

cd שינוי ספרית עבודה .

dir או ls כחית רשימת קבצי בספריה נו.

path נטיב חיפוש של קבצי m.

cd path שינוי נטיב חיפוש .

delet f-name מחיקת קוב .

type f-name הצגת קוב על המס .

פעולות בסיסיות

Example Symbol Operation 5 + 3 + addition, a + b

23 - 12 - subtraction, a - b

3.14 * 0.85 * multiplication, a b⋅

56 / 8 = 8 \ 56 / or \ division, a b÷

5 ^ 2 ^ power, a b

.\ וחילוק שמאלי /חילוק ימני : שני סימני חילוק פעילי

נית לשנות את . חיבור או חיסור, כפל או חילוק, חזקות: הבאהחישוב יבוצע משמאל לימי בסדר .הסוגריי הפנימיי ביותר יחושבו ראשוני. י שימוש בסוגריי"הסדר ע

Page 3: Matlab Book

3

: אינו מתחשב ברווחי לדוגמאMATLAB ה

» 2*4+2 * 5

ans =

18

.ans ישתמש במשתנה ברירת המחדל MATLAB א לא הוגדר משתנה עבור התוצאה ה :י הגדרת משתני"פשר לבצע חישוב דומה עא

» a=4,b=5;

a =

4

» c=2*a+2*b

c =

18

שימוש . לא נכתבbלעומת זאת ערכו של , על המסaאחרי ביצוע השורה הראשונה נכתב ערכו של ). ג ללא הדפסה התוצאה נשמרת בזיכרו, בכל מקרה( מונע הדפסה של התוצאה על המס ;בסיומת

. ישתנה בהתאc ונבדוק הא aנשנה את ערכו של

» a=10;

» c

c =

18

. צרי לבצע מחדש את פעולת החישובcכדי לעדכ את ערכו של

» c=2*a+2*b

c =

30

↓י שימוש בחצי "אפשר לשחזר שורה שכבר נכתבה בחלו הפקודות ע א נקיש מספר אותיות . ↑

. נקבל מיידית את הפקודה↑ ל פקודה שכבר נכתבה וראשונות ש

Page 4: Matlab Book

4

פורמט הצגה של מספרי

ספרות אחרי 4ברירת המחדל עבור מספרי ממשי היא . עשרונית` מספרי שלמי יכתבו ללא נק .העשרונית` הנק

. הפקודות הבאות משמשות לקביעת צורת ההצגה

Example: 215 / 6 Comment MATLAB Command 35.8333 default display format short 35.83333333333334 16 digits format long 35.833e+01 5 digits + exponent format short e 35.83333333333334e+01 16 digits + exponent format long e 4041eaaaaaaaaaab hexadecimal format hex 35.83 2 decimal digits format bank + positive negative or zero format + 215 / 6 rational approximation format rat

.שימוש בפורמט מסוי אינו משנה את ער המשתני אלא רק את אופ הצגת

משתני

MATLAB ה. כאשר התו הראשו חייב להיות אות, תווי19ה יורכב ממלה אחת עד ש של משתנ .פקודות חייבות להיכתב באותיות קטנות. מבחי בי אותיות גדולות וקטנות

:משמעות מיוחדת ניתנת למשתני הבאי

Value Special variables The default variable name used for results ans The ratio of circumference of a circle to its diameter pi The smallest number such that when added to one creates a number grater than one on the computer

eps

Count of floating point operations flops Which stands for infinity, e.g., 1/0 inf Which stands for Not-a-Number, e.g., 0/0 NaN I = j = − 1 I (end) j The smallest usable positive real number relmin The largest usable positive real number relmax Number of function input arguments used nargin Number of function output arguments used nargout

inf = תגרו לתוצאה 0חלוקה ב, אינסו infולא לעצירת המחשב .

eps = המספר הקט ביותר המוכר למחשב.

NaN = ריק", לא קיי מספר."

Page 5: Matlab Book

5

: בפקודותי שימוש" נקבל עWORKSPACE אינפורמציה על המשתני המוגדרי ב

» who

Your variables are:

a b c

:או יותר מפורט

» whos

Name Size Elements Bytes Density Complex

a 1 by 1 1 8 Full No

b 1 by 1 1 8 Full No

c 1 by 1 1 8 Full No

Grand total is 3 elements using 24 bytes

:WORKSPACE הפקודות הבאות משמשות למחיקת משתני מ ה

» clear all או

» clear a b . . .

הערותניקוד פיסוק ו

. מונע את הצגת התוצאה; שימוש ב. משמשי להפרדה בי פקודות"," ו";"הסימני

%. יתעל מכל מה שייכתב מימי לMATLAB ה, משמש לכתיבת הערות"%"הסימ

: שהפקודה ממשיכה בשורה הבאהMATLAB אומר ל". . ."הסימ

» 4*...

5

ans =

20 במקרה ורוצי להפריד ש של משתנה לשתי שמות (משתנה על ידי רווח לא נית לקטוע ש של

.first_name(מומל לעשות זאת על ידי קו תחתו לדוגמא

Page 6: Matlab Book

6

מטריצות

, ממשי או מורכב–כל נתו מספרי . MATLABמטריצה הינה יחידת ארגו הנתוני הבסיסית בוקטור הנו מקרה פרטי של . ממדיער דוידי ממטריצה מיוצגת על. ידי מטריצהמיוצג למעשה על

.ממדיתמטריצה חדמבלי לחזור על , שימוש במטריצות מאפשר ביצוע פעולות מתמטיות על קבוצה גדולה של איברי

.הפעולה עבור כל איברמעבר בי שורות יסומ [ . . . ]. י שימוש בסוגריי מרובעי " תעשה עMATLABהגדרת מטריצה ב

".,"נית להשתמש ברווח או ב, הפרדה בי איברי בשורהלצור ". ;"ב

לדוגמה

≥≥π: עבור הערכיy = sin(x)רוצי לחשב את הביטוי X0 . מכיוו שלא נית לחשב עבור כל

:0.1πדוגמי את הפונקציה במרווחי קבועי של , נקודה בתחו

» x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]*pi x = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 » y=sin(x) y = Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000

:ממדיי ליניאריי או לוגריתמייהפקודות הבאות משמשות ליצירת מערכי חד

x = [2 2 ∗ pi sqrt(2) 2-3j] יצירת וקטור שורה המכיל איברי שוני x = first : last אשר איבריו מתחילי בער , ורהיצירת וקטור שfirst ,

או בער lastומסתיימי בער , 1מתקדמי בפסיעות של .הקרוב אליו ביותר מלמטה

x = first : increment : last אשר איבריו מתחילי בער , יצירת וקטור שורהfirst , lastומסתיימי בער , incrementמתקדמי בפסיעות של

. אליו ביותר מלמטהאו בער הקרובx = linspace ( first ,last ,n ) יצירת וקטור שורה בעלnאשר איבריו מתחילי , איברי

.lastומסתיימי בער , firstבער x = logspace ( first ,last ,n ) יצירת וקטור שורה בעלnאשר איבריו מתחילי , איברי

.בעל ריווח לוגריתמי ,10last ומסתיימי בער 10firstבער

Page 7: Matlab Book

7

לדוגמה : שהופיע בדוגמא הקודמת אפשר לבנות ג כxאת הוקטור

» x=[0:0.1:1]*pi; או» x=[linspace(0,1,11)]*pi;

כפי שהגדרנו אותו בזמ הגדרת , י ציו ש המטריצה" מטריצה תעשה עפניה לאיבר מסוי בתו

את –המספר הראשו מציי את מספר השורה והאיבר השני . והאינדקס של אותו איבר, המטריצהא נכתוב ". :"ידי הסימ תתבצע על, בטור או בשורה, פנייה למספר איברי רציפי. מספר העמודה

.עמודה/ הפנייה מתייחסת לכל איברי השורה , מצידיוללא מספרי " :"את הסימ לדוגמה

:שהגדרנו קוד לכ, א נשתמש בוקטור

» x(3) ans = 0.6283 » x(1:5) ans = 0 0.3142 0.6283 0.9425 1.2566 » x(3:-1:1) ans = 0.6283 0.3142 0

.מטריצות קיימותנית להרכיב מטריצה גדולה מתת

לדוגמה

» a=1:5,b=1:2:9 a = 1 2 3 4 5 b = 1 3 5 7 9 » c=[a b] c = 1 2 3 4 5 1 3 5 7 9

":;" י הסימ"ע, כפי שכבר צוי, ממדי יופרדו השורות כאשר מגדירי מער דו

» A=[1 2 3;4 5 6] A = 1 2 3 4 5 6

Page 8: Matlab Book

8

:הגדרת ווקטור עמודה

» a=[1; 2 ;3 ]; a = 1 2 3

):tranposeשמשמעותו " ('"י שימוש בסימ "או ע

» a=[1 2 3 4].' a = 1 2 3 4

.מספרי מרוכבי יהפכו לצמוד, ודה לפני הגרש ללא נקtransposeא נשתמש בסימ

לדוגמה

» c=a+a*i c = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i » c' ans = 1.0000 -1.0000i 2.0000 -2.0000i 3.0000 -3.0000i 4.0000 -4.0000i

כאשר לא מתייחסי אל המערכי , מאפיי פעולות בי מערכיMATLABב"." באופ כללי הסימ

כלומר הפעולה החשבונית , )בדר ההתייחסות המוכרת לנו מאלגברה ליניארית(כאל מטריצות .מבוצעת על זוגות איברי תואמי

לדוגמה

» a=[1 2];b=[3 4]; » c=a.*b c = 3 8

יצג הכפלת מטריצות כמו באלגברה ליניארית ומחייב ממדי שימוש בסימ כפל ללא נקודה מי

:מטריצות תואמי

» c=a*b' c = 11

Page 9: Matlab Book

9

פעולות בי סקלר למטריצה

:כאשר מבצעי פעולה חשבונית בי סקלר ומטריצה תבוצע פעולה זהה על כל אחד מאברי המטריצה

» a=[1 2;3 4] a = 1 2 3 4 » a+2 ans = 3 4 5 6 » 2*a-1 ans = 1 3 5 7

פעולות בי מטריצות: בי מטריצות אפשר לבצע. פעולה בי מטריצות אפשרית א ורק כאשר למטריצות ממדי זהי

הפעולה תבוצע , כבר ראינו שא נסמ נקודה אחרי ש המטריצה . חיבור חיסור כפל חילוק וחזקה . בעלי אינדקס זההבי איברי

לדוגמה

» a=[1 2;3 4]; » b=[1 1;2 2]; » a+b ans = 2 3 5 6 » a.*b ans = 1 2 6 8 » a./b % ( = b.\a ) ans = 1.0000 2.0000 1.5000 2.0000 » a.^b ans = 1 2 9 16 » a.^(-1) ans = 1.0000 0.5000 0.3333 0.2500

Page 10: Matlab Book

10

:הטבלה הבאה מסכמת פעולות בי מטריצות

a = [a1 a2 . . . an] , b = [b1 b2 . . . bn] c = <a scalar>

a + c = [a1+c a2+c . . . an+c] חיבור סקלר ומטריצה

a∗ c = [a1∗ c a2 ∗ c . . . an ∗ c] הכפלת סקלר במטריצה a + b = [a1+b1 a2+b2 . . . an+bn] חיבור מטריצות

a .∗ b = [a1∗ b1 a2∗ b2 . . . an ∗ bn] הכפלת איברי מטריצות a . / b = [a1/b1 a2/b2 . . . an/bn] חילוק ימני a . \ b = [a1\b1 a2\b2 . . . an\bn] חילוק שמאלי

a . ^c = [a1^c a2^c . . . an^c] c . ^a = [c^a1 c^a2 . . . c^an]

a . ^b = [a1^b1 a2^b2 . . . an^bn]

פעולות בחזקה

פעולות חכמות :החלפת איבר בתו מער

» a=[1 2;3 4] a = 1 2 3 4 » a(2,2)=5 a = 1 2 3 5 » a(3,3)=6 a = 1 2 0 3 5 0 0 0 6

MATLABכשדרשנו למק איבר בעל , ת לגבי גודל או סוג המער לכ במקרה זה לא דורש הצהרו

. המער הוגדל ונוספו בו אפסי2*2במער ) 3,3(אינדקס

מטריצותמטריצות ותת :הגדרת מטריצה מתו מטריצה אחרת

» a=[1 2 3;4 5 6;7 8 9] a = 1 2 3 4 5 6 7 8 9 » b=a(1:2,2:3) b = 2 3 5 6

Page 11: Matlab Book

11

:ידי שימוש במטריצות אחרותהרכבת מטריצה על

» a=[1 2;4 5] a = 1 2 4 5 » b=[3 6]' b = 3 6 » c=[a b;7 8 9] c = 1 2 3 4 5 6 7 8 9

: שימוש במטריצה ריקהדה מחיקת שורה או עמו

» c(:,2)=[] c = 1 3 4 6 7 9

: במקו אינדקס מיצג את כל האינדקסי הקיימי(:)שימוש בסימ

» c(:)’ ans = 1 4 7 3 6 9

:שכפול וקטור ליצירת מטריצה

» c c = 1 3 4 6 7 9 » d=c(:,[2 2 2 2]) d = 3 3 3 3 6 6 6 6 9 9 9 9

בכל , מתייחס לכל האיברי בעלי אינדקס עמודה שווה, ":"האיבר הראשו בסוגריי העגולי האיבר , ל"בדוגמה הנ. האיבר השני מגדיר את אינדקס העמודה. למעשה וקטור עמודה–השורות

.לפיכ יתבצע תהלי בניית וקטור עמודה עבור כל איבר בוקטור. השני הוא וקטור

סופר את MATLABה. י שימוש באינדקס אחד"ממדי עאפשר לפנות אל איבר השיי למער דו .ממעלה למטה, לפי סדר העמודות, איברי המטריצה

» a=[1 2 3 4;5 6 7 8] a =

Page 12: Matlab Book

12

1 2 3 4 5 6 7 8 » a(5) ans = 3

ואחד ) false(אפס מייצג שקר . מערכי המכילי את האיברי אפס ואחד נקראי מערכי לוגיי

).true(מיצג אמת לדוגמה

» x=-3:3

x = -3 -2 -1 0 1 2 3 » abs(x)>1 ans = 1 1 0 0 0 1 1 » y=x(abs(x)>1) y = -3 -2 2 3

ההתייחסות היא לאיברי המקיימי , ידי תנאי בוליאניכאשר הפניה לאיברי במטריצה מיוצגת על .את התנאי

הטבלה הבאה מסכמת את השימוש באינדקסי

A(r,c) פנייה לאיבר השיי למטריצהA הנמצא בשורה rדה ובעמוc. A(r,:) פנייה לכל האיברי השייכי למטריצהA אשר נמצאי בכל העמודות

.rשבשורה A(:,c) פנייה לכל האיברי השייכי למטריצהA אשר נמצאי בכל השורות

.cשבעמודה A(:) פונה לכל האיברי השייכי למטריצהA כאשר האיברי מסודרי כווקטור

. נלקחי לווקטור זה עמודה עמודה לפי הסדרהאיברי. עמודהA(i) פנייה לאיברi של מטריצה Aהמסודרת כווקטור עמודה כפי שמוסבר לעיל .

פקודות חיפוש

i=find(x) Return indices of the x where its elements are nonzero [r,c]=find(x) Return row and column indices of the array x where its elements are

nonzero

1 כמו בדוגמא הקודמת נבנה מטריצה המורכבת מכל המספרי שערכ המוחלט גדול מ לדוגמה :נשתמש בפקודת חיפוש. 3עד ) 3: (בתחו

» x=-3:3 x = -3 -2 -1 0 1 2 3 » k=find(abs(x)>1) k = 1 2 6 7

Page 13: Matlab Book

13

» y=x(k) y = -3 -2 2 3

פקודות מטריצה נוספות

flipud(A)סיבוב מטריצה למעלה או למטה . fliplr(A)סיבוב מטריצה ימינה או שמאלה .

reshape(A,m,n) שינוי הממדי של המטריצה A) A חייבת להכיל m*nי אבר.( rot90(A) מעלות ימינה או שמאלה90 סיבוב מטריצה בכפולות של .

לדוגמה

» a=[1 2 3;4 5 6] a = 1 2 3 4 5 6 » b=rot90(a) b = 3 6 2 5 1 4

diag(A) בונה ווקטור עמודה מהאלכסו הראשי של המטריצה A. diag(v)הווקטור , בונה מטריצה אלכסוניתVירכיב את האלכסו הראשי .

לדוגמה

: כדי לבנות מטריצת יחידהdiagנעשה שימוש בפקודה

» v=[1 1]; » I=diag(v) I = 1 0 0 1

Page 14: Matlab Book

14

ממדיימערכי רב

הגרסה . מדיי בלבד אפשרו שימוש במערכי חד ממדיי ודו מMATLAB גרסאות קודמות של

ממדי גדול מ ' מערכי בעלי מס(מאפשרת שימוש במערכי רב ממדיי , MATLAB - 5, הנוכחית

2 .(

, ממדי בפקודות אלגברה ליניארית המיועדות לעבוד ע מטריצות אסורשימוש במערכי רב

.ממדימערכי דוממדי לתתבמקרה זה אפשר לפרק את המער הרב

ממדי תבוצע פעולה זהה בי הסקלר ובי כל אחד מאברי לה בי סקלר ומער רבא תופעל פעו

.המער

:ממדי אפשרית בשלוש דרכייצירת מער רב

.י שימוש באינדקסי"ע

).מערכי מיוחדי (MATLABשימוש בפקודות

)ממדיהרכבת מער רב (catשימוש בפקודה

.ת משלושה מערכי דו ממדי יצירת מער תלת ממדי בעל שלוש שכבודוגמא

» a=[1 0;0 1];

» b=[2 2;2 2];

» c=[0 3;3 0];

» d=cat(3,a,b,c)

d(:,:,1) =

1 0

0 1

d(:,:,2) =

2 2

2 2

d(:,:,3) =

0 3

3 0

» size(d)

ans =

2 2 3

2 2 2 2

1 0 0 1

0 3 3 0

d (2,2,1)

שלושה ממדים

Page 15: Matlab Book

15

» A=[1 0 4;3 5 6;9 8 7];

» A(:,:,2)=[1 0 4;3 5 6;9 8 7]

A(:,:,1) =

1 0 4

3 5 6

9 8 7

A(:,:,2) =

1 0 4

3 5 6

9 8 7

» max(A)

ans(:,:,1) =

9 8 7

ans(:,:,2) =

9 8 7

» 5*ones(2,2,2)

ans(:,:,1) =

5 5

5 5

ans(:,:,2) =

5 5

5 5

» size(A)

ans =

3 3 2

» ndims(A)

ans =

3

» whos

Name Size Bytes Class A 3x3x2 144 double array

ממד

:ממדייקבלת אינפורמציה על מערכי רב

:פקודות היוצרות מערכי מיוחדי

:שימוש באינדקסי

פקודות הפועלות על ווקטורי

Page 16: Matlab Book

16

help –עזרה

:על ידי התחברות לרשת דר התפריטהדר הנוחה והמפורטת ביותר לקבלת עזרה היא

Help Desk (HTML)

:לדוגמא, וש הפקודהhelpי הקשת "כמו כ נית לקבל הסבר על כל פקודה ופקודה ע

» help sqrt SQRT Square root. SQRT(X) is the square root of the elements of X. Complex results are produced if X is not positive. See also SQRTM.

.help topics כשלעצמה תגרו להצגת רשימת נושאי helpהפקודה

help topic הצגת הפקודות הקשורות באותו נושא .

lookfor keyword רשימת פקודות לפי הקשר .

» lookfor complex CONJ Complex conjugate. IMAG Complex imaginary part. REAL Complex real part. . . . . . . . . . .

מספרי מרוכבי

ה מטריצות MATLAB באופ כללי משתני ב, אי צור לקבוע את סוג המשתנהMATLAB ב .מקרה פרטי יכול להיות סקלר ממשי. המכילות איברי מרוכבי

.j או iהער המדומה של מספר מרוכב יסתיי באותיות

» c1=1+2i

c1 =

1.0000 + 2.0000i

» c2=1+sin(pi/2)*i

c2 =

1.0000 + 1.0000i

Page 17: Matlab Book

17

:הצגת מספרי מרוכבי אפשרית בצורה פולארית או קרטזית

M = M∠ ⋅ = +θ θe a bij

M = a b tan (b / aa Mcos b Msin

2 2 1+ == =

−θθ θ

)

:י שימוש בפקודות הבאות"יבוצע המעבר ע MATLABב

» M=abs(c1)

M =

2.2361

» teta=angle(c1)

teta =

1.1071

» a=real(c1)

a =

1

» b=imag(c1)

b =

2

. מיוצגות ברדיאניMATLAB זוויות ב

. משמשת ג לחישוב ער מוחלטabsהפקודה

פקודות נוספות

conj(z) הצמוד של מספר מרוכב .

[teta,r]=cart2pol(x,y) ר בצורה קרטזיתמציג בצורה פולרית מספר מרוכב המתוא.

[x,y]=pol2cart(theta,r) מציג בצורה קרטזית מספר מרוכב המתואר בצורה פולרית.

Page 18: Matlab Book

18

פונקציות מתמטיות

Mathematical Functions Absolute value or magnitude of complex number abs(x) Inverse cosine acos(x) Inverse hyperbolic cosine acosh(x) Four quadrant angle of complex angle(x) Inverse sine asin(x) Inverse hyperbolic sine asinh(x) Inverse tangent atan(x) Four quadrant inverse tangent atan2(x,y) Inverse hyperbolic tangent atanh(x) Round toward plus infinity ceil(x) Complex conjugate conj(x) Cosine cos(x) Hyperbolic cosine cosh(x) Exponential: e x exp(x) round toward zero fix(x) round toward minus infinity floor(x) Greatest common divisor of integer x end y gcd(x,y) Complex imaginary part imag(x) Least common multiple of integer x end y lcm(x,y) Natural logarithm log(x) Common logarithm log10(x) Complex real part real(x) Remainder after division rem(x,y) gives the remainder of x / y

rem(x,y)

Round toward nearest integer round(x) Signum function: return sign of argument e.g., sign(1.2)=1, sign(-23.4)=-1, sign(0)=0

sign(x)

Sine sin(x) Hyperbolic sine sinh(x) Square root sqrt(x) Tangent tan(x) Hyperbolic tangent tanh(x)

:דוגמאות

» y=sqrt(3^2+4^2) y = 5 » y=rem(23,4) y = 3

23/4=5 (3)

Page 19: Matlab Book

19

rem(x,y) שארית אחרי חילוקx / y.

» x=-2.6, y1=round(x), y2=fix(x) x = -2.6000 y1 = -3 y2 = -2

round(x) מעגל כלפי המספר השל הקרוב ביותר.

fix(x) מעגל כלפי אפס.

פעולות על מטריצות ואלגברה ליניאריתאחת מהבעיות הנפוצות . כדי לפשט חישובי מטריצות ואלגברה ליניאריתMATLABבמקור נכתבה

נראה כיצד פותרי בעיה זו ב. מערכת משוואות ליניאריתבאלגברה ליניארית היא פתרו של

MATLAB.

:נתונה מערכת משוואות

3518x780465x436632x

21

321

321

=⋅+⋅=⋅+⋅+⋅=⋅+⋅+

xxxxx

:ובצורתה המטריציונית

b=xA

351804366

xxx

087654321

3

2

1

=

בניגוד למכפלת (כפי שמכירי מאלגברה ליניארית , פעולת הכפל במקרה זה מייצגת מכפלת מטריצות

").*." בסימ MATLAB מערכי המסומנת ב

xי הביטוי "הפתרו למערכת המשוואות נתו ע = A b-1∗ . קיי פתרו יחיד א המטריצהA היא

.מטריצה הפיכה

).מטריצה לא סינגולרית( הפיכה A הא המטריצה MATLAB נבדוק בעזרת ה

Page 20: Matlab Book

20

)A(det דטרמיננטה של מטריצה A .ה שונה מאפס היא מטריצה הפיכהמטריצה ריבועית בעלת דטרמיננט

» A=[1 2 3;4 5 6;7 8 0]

A =

1 2 3 4 5 6 7 8 0 » det(A) ans = 27

)A(rank – דרגת המטריצה A

.מטריצה ריבועית בעלת דרגה מלאה היא מטריצה הפיכה

» rank(A) ans = 3

: בשתי דרכיMATLAB לחשב באת הפתרו למערכת המשוואות אפשר

1. )A(inv – המטריצה ההופכית למטריצה A

» A=[1 2 3;4 5 6;7 8 0]; » b=[366;804;351]; » x=inv(A)*b x = 25.0000 22.0000 99.0000

פעולה כזו אינה קיימת באלגברה ליניארית ומשמעותה , הדר השניה כוללת חלוקת מטריצות .2

.יא כפל בהופכי הMATLAB ב : יש לשי לב להבדל הקיי בחלוקת מטריצות בי חלוקה שמאלית לחלוקה ימנית

A\b=inv(A)*bחלוקה שמאלית b/A=b*inv(A) ימנית חלוקה

:לדוגמה » x=A\b x = 25.0000 22.0000 99.0000

התוצאה אינה זהה

Page 21: Matlab Book

21

הוא מבוסס על פחות פעולות מתמטיות ולכ יותר , הוא הפתרו השניMATLAB הפתרו המומל ב

.מהיר

A\bבמקרה זה החלוקה . כאשר מספר המשוואות קט ממספר הנעלמי קיימי אינסו פתרונות

.מספר מקסימלי של אפסיתית את הפתרו שבו

מטריצות מיוחדות

» a=[1 2 3;4 5 6]; » b=find(a > 10) b = []

. כמטריצה בעלת ממדי אפסMATLAB מטריצה ריקה מוגדרת ב

.WORKSPACE הוא משתנה וקיי ב) bבמקרה זה (הש של המטריצה

» zeros(3) ans = 0 0 0 0 0 0 0 0 0 » ones(2,4) ans = 1 1 1 1 1 1 1 1 » ones(3)*pi ans = 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 » eye(3) ans = 1 0 0 0 1 0 0 0 1 » rand(3,1) ans = 0.2190 0.0470 0.6789

מטריצה ריקה

מטריצה של אפסים

מטריצה של אחדים

מטריצת יחידה

איברים בין אפס לאחד, )רנדומלית(מטריצה אקראית

Page 22: Matlab Book

22

size אפשר להשתמש בפונקציה בעלת ממדי זהי למטריצה אחרת לדוגמא כדי ליצור מטריצהa = 1 2 3 4 5 6 » ones(size(a)) ans = 1 1 1 1 1 1

m פקודות העוסקות בקבצי

לעבוד בחלו הפקודות " נוח"כאשר מעוניני לבצע סדרת פעולות ארוכה לא . MATLAB של ה

.m.* מומל לכתוב את תוכנית ולשמור אותה כקוב ע סיומת במקרה זה

M-File Functions Display result without identifying variable name disp(ans) Control the Command window echoing of scrip file commands

echo

Prompt user for input input Giev control to keyboard temporarily (Type return to quit) keyboard pause until user presses any keyboard key pause pause for n seconds pause (n) pause until user presses mouse key or keyboard key waitforbuttonpress

הוא אינו מציג את m-fileע פקודות מתו מבצMATLAB כאשר ה :הצגה כזאת אפשרית א משתמשי בפקודות, הפקודות על המס

» echo on » echo off לביטול

Page 23: Matlab Book

23

פלטקלט

disp הדפסת מחרוזת או ער של משתנה ללא שמו.

input הדפסת מחרוזת והמתנה לקלט מהמקלדת.

» x=input('input x : '); input x : 3 » disp(x) 3

בקרת תוכנית או debuggingהפקודות הבאות מאפשרות עצירה זמנית של התוכנית לצור

.שינוי פרמטרי

keyboard מצב . בקרה זמנית ללוח המקשיkeyboard מאפשר הפסקה returnפקודה . WORSPACE זמנית של תוכנית והפעלת פקודות דר ה

.משמשת לביטול

pause כל מקש יגרו לביטול, הפסקה זמנית בתוכנית.

)pause(n הפסקה זמנית ,nשניות .

waitforbuttonpress י לחיצה על העכבר"ביטול ע, הפסקה זמנית.

. באמצע ביצוע פעולהMATLAB מפסיקה את הctrl-cלחיצה על

.k_board הנקרא m-file נכתוב .keyboard: נדגי שימוש בפקודות

A=5; B=5; keyboard C=A+B » k_board K» B=10; K» return C = 15

. k_boardהפעלת התוכנית

תוכנית

פלט

Page 24: Matlab Book

24

עצרה את ביצוע התוכנית ואיפשרה לשנות את ערכו של keyboardהפקודה Bהסימ . 10 ל5 מK» מופיע כאשר נמצאי במצב keyboard.

תכנות

קבצי

:MATLABקיימי שני סוגי של קבצי . M-FILES מבוסס על MATLABכנות בת

).script(קבצי תוכנית •

).function(קבצי פונקציה •

:ההבדלי העיקריי בי שני הסוגי ה

.קבצי פונקציה מקבלי ארגומנטי כקלט ומחזירי ארגומנטי כפלט .א

ואילו משתני MATLABבודה של פועלי על המשתני הקיימי במרחב העM-FILES קבצי .ב

אשר לא , הינ משתני מקומיי, )המוגדרי בפונקציה עצמה(פנימיי בקבצי פונקציה

.מוגדרי מחו לפונקציה

:מבנה כללי של קוב

function [out1,out2,…,outm]=func_name(in1,in2,…,inn)

% FUNC_NAME Simple function that does nothing

% FUNC_NAME(IN1,IN2,..,) blha, blha, blha …

% … explanation of function …

… program body …

אחריה בסוגריי מרובעי הארגומנטי , functionשורה ראשונה של פונקציה תכלול את המילית

אי צור בסוגריי , במידה והפלט כולל ארגומנט אחד בלבד. מהפונקציהכפלטהמוחזרי

נית להשאיר סוגריי מרובעי ריקי או לא לכתוב , במידה ואי כלל פלט מהפונקציה. ובעיהמר

לאחר סימ השוויו יופיע ש הפונקציה ואחריו בסוגריי עגולי הארגומנטי שמקבלת . דבר

.שורה זו תופיע בפונקציות בלבד. כקלטהפונקציה

כאשר נעשה שימוש בפונקציה , שורה זו יציגhelp 1) H1 .(MATLABשורה שניה נקראת שורת

lookfor או כאשר מתבקשת עזרה )help (שורה זו יכולה להופיע בקבצי משני . למחיצה שלמה

.הסוגי

Page 25: Matlab Book

25

help( כשתתבקש עזרה על הפקודה המסויימת הזו H1שורות ההערות הבאות יוצגו יחד ע שורת

function_name.(

.פונקציה/ ת לאחר שורות ההערות יופיע גו התוכני

global –הגדרת משתני כגלובליי

רצוי . יהיו מוכרי כמשתני גלובליי ולא מקומייglobalמשתני אשר יופיעו לאחר הפקודה

יש להשתמש באותיות –להגדיר את המשתני הגלובליי בתחילת התוכנית ולמע בהירות התוכנית

.גדולות

קבוע ומוגדר aכאשר המקד , מי פולינו ממעלה שניה נכתוב פונקציה המחשבת את מקדדוגמה

):mycube.m(כמשתנה גלובלי

function P=mycube(x1,y1,x2,y2)

% MyCube calculate second order polynom coeficients % mycube(x1,y1,x2,y2) returns coeficiets b and c (P(1) and P(2)) % of the polynom: Y=aX^2+bX+c, from data of two points on the curve. % A is a global variable global a; d1=y1-a*x1^2; d2=y2-a*x2^2; A(1,1)=x1; A(1,2)=1; A(2,1)=x2; A(2,2)=1; d=[d1 d2]'; P=inv(A)*d;

Page 26: Matlab Book

26

:הרצת התוכנית

» help mycube MyCube calculate second order polynom coeficients mycube(x1,y1,x2,y2) returns coeficiets b and c (P(1) and P(2)) of the polynom: Y=aX^2+bX+c, from data of two points on the curve. A is a global variable » global a; » a = 2; » P=mycube(1,1,2,1) p= -6 5

טיפוסי משתני

:MATLABה טיפוסי מידע בסיסיי בקיימי שיש

• double –הייצוג הסטנדרטי של מספרי ב MATLAB – 8בתי .

• char –בתי2ידי כל תו מיוצג על. ייצוג סטנדרטי של תווי ומחרוזות .

• sparse –אשר רוב איבריה אפסי, צורה לאחסו מטריצות.

• storage – צורת אחסו קומפקטית של MATLAB .בצע חישובי אריתמטיי על לא נית ל

.מערכי מטיפוס זה

• cell –דומה . הקשורי במבנה לוגי, מבנה אחסו המאגד מספר משתני מטיפוסי שוני

. בשפות תכנות עיליותstructלטיפוס

• struct –דומה ל cell.

.מימדיידי מער רבכל אחד מטיפוסי אלו מיוצג על

Page 27: Matlab Book

27

אופרטורי

:של אופרטוריקיימי שלושה סוגי

אופרטורי אריתמטיי •

).'וכו. ,^: , *., *, , (+לביצוע פעולות מתמטיות על מערכי ומטריצות

אופרטורי יחסיי •

). ~ =ו== <, =>, <, =>, (FALSE או TRUEמחזירי

הפעלת אופרטור לוגי על שני מערכי מפעילה את האופרטור הלוגי על כל אחד מאיברי המער

מער זה נקרא . בהתא לתוצאת הפעולה הלוגית1 ו 0המכיל , רה מער בעל מימדי זהיומחזי

.מער לוגי

:אופרטורי לוגיי •

תאורהאופרטור& ANDלוגי . | ORלוגי . ~ NOTלוגי .

xor EXCLUSIVE ORלוגי .

all מטריצה האופרטור פועל על העמודותב. א כל איברי הוקטור שוני מאפס1מחזיר.

any א קיי איבר בוקטור השונה מאפס1מחזיר .

דוגמה

»A=[1 2 3;4 5 6;7 8 9];

»B=[3 3 2;4 7 6;0 8 1]; »A==B ans= 0 0 0 1 0 1 0 1 0 »u=[1 0 6 0 9 2]; »v=[4 0 0 1 1 0]; »u & v

Page 28: Matlab Book

28

ans= 1 0 0 0 1 0 »u | v ans= 1 0 1 1 1 1 »~u ans= 0 1 0 1 0 0 »all(B) ans= 0 1 1 »all(u) ans= 0 »any(v) ans= 1

Page 29: Matlab Book

29

בקרות זרימה

. ה פקודות המשמשות לניתוב זר הפקודות בתוכנית) control flow(בקרות זרימה

forלולאת

:מבנה כללי

for index = start : increment : end

…statements…

end

ער ברירת המחדל של . increment בפסיעות של end לער start יתקד מהער indexהמשתנה

.1הפסיעה הוא

דוגמה

.Mמחשבת את ממוצעי העמודות של המער ) mloop.m(התוכנית הבאה

A=[13 5 10 7;5 6 7 8;15 10 13 12];

M=zeros(1,4); i=0; for x=A i=i+1; M(1,i)=sum(x)/length(x); end

:הרצת התוכנית

» mloop » A A =

13 5 10 7 5 6 7 8 15 10 13 12

» M M =

11 7 10 9

Page 30: Matlab Book

30

מעט שמאלה מקו השורות של ) כגו לולאה או תנאי(נהוג להתחיל שורות השייכות למבנה סגור

כלומר מבנה ראשי הכולל (כנית צורה זו מדגישה את המבנה ההיררכי של התו, התוכנית הראשית

).בתוכו תת מבני

.מומל להימנע משימוש בלולאה כאשר נית לקבל תוצאה זהה ללא לולאה

: לבצע בשתי דרכי נוספותMATLAB) ב(את הדוגמא הקודמת נית

דוגמה

» [m,n]=size(A); % Method number 1

» M=sum(A)/m M = 11 7 10 9 » M=mean(A) % Method number 2 M = 11 7 10 9

, לבצע פעולות על מערכיMATLAB משו שה מנצלות את היכולת של הצורות אלה מומלצות

. ולכ חוסכות את זמ הריצה הארו יחסית של הלולאה

נבני תו כדי ריצת ה, פעולה נוספת המומלצת לצור חיסכו בזמ היא הגדרה מראש של מערכי

).מקסימלי(הלולאה כמערכי אפסי בגודל הסופי

)לולאה מותנת ( whileלולאת

:מבנה כללי

while expression

…statements…

end

).1( שווה לביטוי אמת expressionהלולאה מבצעת כל עוד

Page 31: Matlab Book

31

דוגמה

):MATLAB ביותר המוכר להמספר הקט (epsלחישוב הער , )eps1.m(נכתוב את התוכנית הבא

num=0;

eps=1; while (1+eps)>1 eps=eps/2; num=num+1; end

:הרצת התוכנית

» eps1 num = 53 » eps=2*eps eps = 2.2204e-016

כ שסכומ , 1התוכנית מחפשת בצורה איטרטיבית את המספר הקט ביותר שאפשר להוסי למספר

. 1 דול מיהיה ג) MATLAB ב(

Page 32: Matlab Book

32

if, else, elseifמשפטי תנאי

:מבנה כללי

if expression1

…statements…

elseif expression2

…statements…

else

…statements…

end :במקרה זה יתכנו המקרי הבאי

. מתקיי תבוצע סדרת הפקודות הראשונה1 א ביטוי

תבוצע סדרת מתקיי 2במידה וביטוי . 2יקה של ביטוי לא מתקיי תתבצע בד1 א ביטוי

.הפקודות השניה

. else תבוצע סדרת הפקודות השייכת ל, א א אחד מהביטויי אינו מתקיי

. אינו חובהelseifאו / וelse השימוש ב. elseifנית להשתמש במספר ביטוי מסוג

דוגמה

):arand.m] (1 - 0.9[או ] 0.9 - 0(, ] 0.1 - 0(נבדוק הא מספר אקראי נמצא בתחו

a=rand(1)

if a < 0.1 disp('range = [0-0.1)') elseif (a < 0.9) & (a >= 0.1) disp('range = [0.1-0.9)') else disp('range = [0.9-1]') end

:פלט התוכנית

» arand a = 0.8913 range = [0.1-0.9)

Page 33: Matlab Book

33

דוגמה

):eps) eps2.mלחישוב הער , forוש במשפט תנאי בתו לולאת שימ

eps2=1;

for num=1:1000; eps=eps/2; if (1+eps)<=1 eps=eps*2; break end % {if} end % {for}

:פלט התוכנית

» eps2 eps = 2.2204e-016

otherwise-case-switch

: מבנה כללי

switch expression (scalar or string)

case value1

…statements…

case value2

…statements…

:

otherwise

…statements…

end

בהתא לערכו של משתנה או , משמשת למקרי בה מעוניני לבצע פעולות שונותswitchפקודת

.ביטוי מסוג סקלר או מחרוזת

Page 34: Matlab Book

34

):swit1.m(דוגמה

go=1;

while go qu=input('input 1,2,3,4,5 or another number to quit'); switch qu case {2,4} disp(' 2 or 4') case {1,2,3} disp(' 1 or 2 or 3') case 5 disp(' 5') otherwise go=0; disp(' end'); end end

:הרצת הקוב

» swit1 input 1,2,3,4,5 or another number to quit 1 1 or 2 or 3

input 1,2,3,4,5 or another number to quit 2 2 or 4

input 1,2,3,4,5 or another number to quit 3 1 or 2 or 3

input 1,2,3,4,5 or another number to quit 4 2 or 4

input 1,2,3,4,5 or another number to quit 5 5 input 1,2,3,4,5 or another number to quit 6 end

Page 35: Matlab Book

35

המתאי case ממשיכה התוכנית מהswitchבה לאחר פקודת ה, C בשפות כגו switchבשונה מ

. המתאי התוכנית יוצאת מהלולאהcase לאחר הMATLABב, או סו הלולאהbreakעד לפקודת

פונקציות פנימיות

הפונקציה הראשית תופיע בראש הקוב . נית להגדיר מספר פונקציות בקוב אחדMATLAB בקוב

פונקציות המוגדרות באותו קוב . הפונקציות האחרות תופענה בהמש הקוב. ותישא את ש הקוב

אלא א המשתני הוגדרו כמשתני (אינ יכולות לפנות למשתני פנימיי של פונקציות אחרות

.)גלובליי

: פונקציה זו בסדר הבאMATLABמחפש , בפניה לפונקציה כלשהיא

.פונקציה פנימית •

).יוסבר בהמש(פונקציה פרטית •

.פונקציה כללית •

פונקציה פרטית

נית לגשת אליה רק מתוכניות במחיצת האב . privateפונקציות השוכנות תחת מחיצה מיוחדת בש

)parent directory .( נית להגדיר מחדש , פרטיות אינ נגישות מחו למחיצת האבמכיוו שפונקציות

.פונקציות בעלות ש זהה לפונקציות ממחיצות אחרות

Page 36: Matlab Book

36

המרת מחרוזות

eval(‘string’) – הרצת ביטוי המופיע במחרוזת.

feval(‘function’) –הרצת פונקציה המופיעה כמחרוזת .

דוגמה

» t=’i+j’;

» i=2; » j=3; » eval(t) ans= 5 »f=’sin’; » k=pi/2; » feval(f,k) ans= 1

. וניתנת להידורevalשכ היא יעילה יותר מהפונקציה , feval עדי להשתמש כשנית בפונקציה

אופטימיזציה

MATLABוקטוריזציה של לולאות . הינה תוכנית שתוכננה לביצוע פעולות על מטריצות ווקטורי

.תאי את ביצוע התוכנית

):pi) sin1.m*10 עד 0צירת וקטור המכיל ערכי סינוס מידוגמה

tic

i=0; for t=0:0.01:10 i=i+1; y(i)=sin(t); end toc

Page 37: Matlab Book

37

):sin2.m(תוכנית זו לאחר וקטוריזציה

tic t=0:0.01:10; y=sin(t); toc

.הרצה של שתי התוכנית תראה כי התוכנית השניה מהירה מהתוכנית הראשונה

גרפיקה דו ממדית

)x,y(plot –מימדי שרטוט עקו דו.

ידי איברי כאשר כל נקודה בגר מיוצגת על, .x כנגד וקטור yפקודה זו מציירת גר של וקטור

הנקודות ). ע אותו מספר איברי–הוקטורי חייבי להיות בממד שווה (מתאימי בוקטורי

הנו x וm×n הנו מער בגודל yבו במקרה . מחוברות בקווי ישריy וxהמוגדרות בוקטורי

. עקומות בצבעי שוניn יתקבלו mוקטור באור

דוגמה

π20 בתחו sin(x)שרטוט גר של −:

» x=linspace(0,2*pi,30);

» y=sin(x); » plot(x,y);

:הפלט המתקבל

.המחוברות בקווי ישרי, )y וxקטורי גודל הו( נקודות 30התקבל עקו לפי

Page 38: Matlab Book

38

כנגד yכלומר , i כנגדy(i) יתקבל גר של ערכי plot(y)לדוגמא , א יצוי רק וקטור נתוני אחד

).yגודל הוקטור = y) i=1,2,....,n, nהאינדקסי של

:sידי הוספת מחרוזת מאפשרת לקבוע את סוג וצבע הקו עלplotהפקודה

» plot(x,y,s)

:נית לבחור צבע וסוג מתו האפשרויות הבאות

Symbol Color Symbol Marker Symbol Line Style b g r c m y k w

כחול ירוק אדום

ירוק–כחול ארגמן–אדום

צהוב שחור לבן

. o x + * s d

נקודה עיגול איקס פלוס כוכב ריבוע יהלום

- : -. --

קו רציף קודותנ נקודה–קו

מקווקו

. יכולה לשמש ג לשרטוט מספר עקומות בגר אחדplotהפקודה

דוגמה

» plot(x1,y1,’r’,x2,y2,’b’,x3,y3,’y’)

. בצהובx3 כנגד y3 בכחול ו x2 כנגד y2, באדוx1 כנגד y1: ל תשרטט שלוש עקומות"הפקודה הנ

עיצוב תרשי

xlabel(‘string’) –ציר הגדרת כותרת x

ylabel(‘string’) – הגדרת כותרת ציר y

legend(‘string1’,’string2’,…) –הגדרת מקרא ומיקומו באמצעות עכבר

title(‘string’) –הגדרת כותרת תרשי

דוגמה

» x=linspace(0,2*pi,30);

» y=sin(x); » z=cos(x); » v=cos(x).^2; » plot(x,y,'g:',x,z,'r-.',x,v,'co'); » grid on;

Page 39: Matlab Book

39

» ylabel('dependent variables y,z and v'); » xlabel('independent variable x'); » legend('sin(x)','cos(x)','cos(x)^2'); » title('sine and cosine curves');

:הפלט שיתקבל

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

depe

nden

t var

iabl

es y

,z a

nd v

independent variable x

sine and cosine curves

sin(x) cos(x) cos(x)2

Page 40: Matlab Book

40

grid –הסרה של רשת הקורדינטות / הוספה)on/off(

axis([Xmin Xmax Ymin Ymax]) קביעת תחו התרשי

התלוי והבלתי כברירת מחדל תחו הגר מוגדר על פי ערכי המקסימו והמינימו של המשתני

. Ymin,Ymax וXmin ,Xmax מעדכנת את התחו בפלט לפי axisהפקודה . תלוי

hold –ביטול הדפסת גר על גר בחלו גרפי קיי / הפעלה)on/off(

שימוש בפקודה ). figure(ירת מחדל שרטוט פלט חדש מנקה את הפלט הקוד מהחלו הגרפי כבר

hold onמבטל את מצב ברירת המחדל ומאפשר הדפסת גר על גר .hold off מחזירה למצב ברירת

. המחדל

SUBPLOTS –מספר גרפי בחלו אחד

).(subfiguresחלונות תתm×nו ל להצגת מספר גרפי שוני בחלו גרפי אחד נית לחלק את החל

subplot(m,n,i) –חלוקת החלו הגרפי להצגת מספר גרפי

כאשר תת החלונות נספרי משמאל (i' שתופיע אחרי פקודה זו תדפיס בתת חלו מס plotפקודת

). לימי ומלמעלה למטה

דוגמה

» x=linspace(0,2*pi,30);

» y=sin(x);z=cos(x); » a=2*sin(x).*cos(x); » b=sin(x)./(cos(x)+eps); » subplot(2,2,1); » plot(x,y),axis([0 2*pi -1 1]),title('sin(x)') » subplot(2,2,2); » plot(x,z),axis([0 2*pi -1 1]),title('cos(x)') » subplot(2,2,3); » plot(x,a),axis([0 2*pi -1 1]),title('2sin(x)cos(x)') » subplot(2,2,4); » plot(x,b),axis([0 2*pi -20 20]),title('sin(x)/cos(x)')

: פלט הבאיתקבל ה

Page 41: Matlab Book

41

)figures(גרפיקה במספר חלונות

באמצעותו נית לפנות אל החלו ', לכל חלו מס. גרפי בחלונות נפרדי' נת לשרטט מסMatlab ב

. לבנטיות רק לגביוולבצע פעולות שתהיינה ר

figure(h) –פתיחת חלו גרפי חדש

דוגמה

» figure(2) % creates new figure number 2

» close(2) % close figure number 2 » figure(1) » figure(3) » close all % close all figures

. במידה והוא כבר קייx גורמת להצגת חלו מספר figure(x)הפקודה

. ללא ציו מספר החלו תסגור את החלו הגרפי הנוכחיcloseודה הפק

clf(n) ניקוי חלו מספר n) החלו הנוכחי–ברירת מחדל .(

הגדלה או הקטנה

zoom –מימדי הגדלה או הקטנה של גר דו.

. zoom onי שימוש בפקודת "נית להגדיל או להקטי את הגר באופ ידני ע

מרכז התמונה ' נק(בנקודה הרצויה ) באמצעות העכבר(מק את הסמ יש לenterאחרי הקשת

לחיצה על הכפתור השמאלי של העכבר תגדיל את הגר ולחיצה על הימני ). המוגדלת או מוקטנת

.י לחיצה וגרירה של העכבר"אפשר ג לקבוע תחו מלבני ע. תקטי אותו

Page 42: Matlab Book

42

.zoom off יש להקיש zoom onלביטול

פקודות קלט גרפיות

[x,y]=ginput(n) –קלט גרפי מהעכבר

' ללא ציו מס. y וx נקודות שיסומנו על הגר באמצעות העכבר ישמרו במשתני nהקורדינטות של

n , המחשב יאפשר לסמ נקודות עד לחיצה על המקשENTER.

של המקש ASCII תשמור בנוס לקורדינטות את מספר הginput(n)=[x,y,button]הפקודה

.שנלח

שרטוט

line(x,y) –שרטוט קו

). plot כמו ב (y(i+1) ,x(i+1) לנקודות y(i),x(i)שרטוט קווי מהנקודות

דוגמה

» x=[4 6 8 9]

x = 4 6 8 9 » y=[6 7 10 11] y = 6 7 10 11 » line(x,y)

:הפלט המתקבל

Page 43: Matlab Book

43

fill([x,y,c]) –שרטוט פוליגו

.c בצבע x,yי "הפקודה צובעת את התחו המוגדר ע

:y וxנפעיל את הפקודה על הוקטורי המוגדרי דוגמה

» fill(x,y,'g')

:הפלט המתקבל

סוגי גרפי

polar(theta,rho,s) –שרטוט גר פולרי

.s בסגנו theta כנגד הזוית rhoגר פולרי של הרדיוס

דוגמה

» r=linspace(1,30,20);

» teta=linspace(0,2*pi,20); » polar(teta,r,'b')

:הפלט המתקבל

fplot(‘fun_name’,[xmin amax]) –ציור פונקציה בתחו מסוי

Page 44: Matlab Book

44

דוגמה

» fplot('sin(1 ./ x)', [0.05 0.1])

:הפלט המתקבל

hist(Y,N) גר המתאר את התפלגות האיברי בווקטור Y.

Nהמרווחי בי האיברי המינימלי והמקסימלי ב' סקלר מציי את מס Y . כאשרNהוא ווקטור ,

קטני מY עמודה המציינת כמה איברי בN(i)מתקבלת עבור כל איבר

N Ni i+ +1

וגדולי מ2

N Ni i+ −1

2.

bar(X,Y,'linetype') – שרטוט העמודות של מטריצה M-by-Nכ Mל קבוצות שNעמודות .

תמוק y(n) העמודה xללא ווקטור . מייצג את מיקו העמודות על גבי הציר האופקיxווקטור

. על גבי הציר האופקי nבנקודה

stem(X,Y,'linetype') –שרטוט גר בדיד .

stairs(X,Y) –שרטוט גר מדרגות .

)5.9(דוגמה

» x=linspace(-2,2,20);

» y=-x.^2+5;

Page 45: Matlab Book

45

» yy=[1 1 2 3 2 5 6 3 4 5 6 7 ]; » nn=[1 2 3 5]; » z=x.^3; » subplot(2,2,1); » bar(x,y,'g') » axis([-2 2 0 5]) » title('bar graph'); » subplot(2,2,2) » stairs(x,y); » title('stairs graph'); » subplot(2,2,3) » hist(yy,nn); » title('histogram'); » subplot(2,2,4) » stem(x,z); » title('stem');

Page 46: Matlab Book

46

:הפלט המתקבל

errorbar(X,Y,L,U,SYMBOL) –גר שגיאות

וסימו השגיאות הנתונות X כנגד ווקטור Yי ווקטור "גר הכולל את סימו העקו המוגדר ע

).שגיאה כלפי מעלה ( Uו) שגיאה כלפי מטה (Lבווקטורי

גרפי בהתא ' עבור מטריצות יתקבלו מס, חייבי להיות בעלי ממד זהה X Y L Uהווקטורי

. ווקטורי העמודה' למס

).plot כמו ב(או סימ של העקו / הוא מחרוזת צבע וSYMBOL ה

.errorbar(Y,L)ידי הפקודה יתקבל על[y-L,y+L] ועמודות שגיאה בתחו n כנגד y(n)גר של

)5.10(דוגמה

» y=[1:2:40];

» x=rand(size(y))*100; » errorbar(y,y.^2,x,2.*x,'k');

Page 47: Matlab Book

47

:הפלט המתקבל

compass(X,Y,'S') –שרטוט גר מצפ

Xגודלו וכיוונו של כל ח הוא כשל הווקטור המתאי, גר חצי שיוצאי מהראשית i Y jn n$ או +$

Xשל המספר המרוכב iYn n+ .את Xו Y אפשר להחלי בווקטור אחד Zשאבריו מספרי מרוכבי .

feather(X,Y,'S') – שרטוט גר feather

אלא שכא החצי יוצאי מהציר האופקי וממוקמי ברווחי שווי אחד compassגר חיצי כמו

.מהשני

)5.11(דוגמה

» z=eig(randn(20,20)) % create vector with 20 random complex numbers

» subplot(2,1,1) » compass(z,'r')' » title('compass'); » subplot(2,1,2) » feather(z,'g'); » title('feather');

Page 48: Matlab Book

48

:הפלט המתקבל

גרפיקה תלת ממדית

plot3(x,y,z,’c’) –מימדי ציור עקו במרחב תלת

כמו . ממדיציור ישרי ועקומות במרחב תלתל, plot פקודה זו היא המקבילה התלת ממדית לפקודה

i נקודה , לדוגמא. ( נקודות במרחבnהמייצגי , n הנ ווקטורי בגודל x,y,z, ממדית הדוplot ב

נית לקבוע את . בפלט שיוצג על המס יחוברו הנקודות בקווי ישרי). x(i),y(i),z(i) בגר היא

.cי הוספת מחרוזת "או הסימ של העקו ע/הצבע ו :שירטוט ספירלה במרחבדוגמה

» t=0:pi/50:10*pi;

» x=sin(t); » y=cos(t); » z=t; » plot3(x,y,z,'r');

Page 49: Matlab Book

49

:הפלט המתקבל

mesh(x,y,z,c) שרטוט משטחי המייצגי פונקציות מהצורה z=f(x,y)

הפלט המוצג על המס . x-yתחו מלבני במישור מעלz כקואורדינטה matlab משטח מוגדר ב

.י חיבור נקודות שכנות בקווי ישרי"מתקבל ע

z מער בגודל m על n ,x ווקטור בגודל mו y ווקטור בגודל n .

) לפי הקשר , z המשטח משורטט כרשת של נקודות בגובהmeshבפקודה )y(j)x(i),f=j)z(i, .

במקרה זה יהיה הקשר , zכי בגודל של ה מערy וxנית להשתמש בפקודה ג כאשר

( )j)y(i,j),x(i,f=j)z(i,.

כלומר צבע . המתאי צבע לכל נקודהcי הגדרת מער נוס "צבע המשטח יכול לשמש כממד רביעי ע

)הנקודה יהיה פונקציה של מיקומה )j)z(i,y(j),x(i),g=j)c(i,.

.z יופיע צבע כפונקציה של הגובה c ללא מער meshבפקודת

כ שיתארו פונקציה אנליטית x,y,z מאפשרת לבנות את המערכי meshgrid(x,y)=[xi,yi]פקודה ה

z = f(x,y)י הפקודה " ויתאימו לשרטוט עmesh.

ווקטורי m המכיל xi בונה הפקודה את המער mבגודל y וn בגודל x: על סמ ווקטורי הקלט

.y עמודה ווקטוריn המכיל yi ואת המער xשורה

באמצעות פונקציות ופעולות של מערכי z נית לבנות את n על m בגודל xi, yiלאחר בניית המערכי

)כ ש, )j)yi(i,j),xi(i,f=j)z(i,- .

Page 50: Matlab Book

50

שירטוט משטח המתאר את הפונקציה דוגמה 22

22

yx

yxsinz

+

+=

:

» x=-8:0.5:8;

» y=x'; » [xi,yi]=meshgrid(x,y); » r=sqrt(xi.^2+yi.^2)+eps; » z=sin(r)./r; » mesh(x,y,z,r)

:הפלט המתקבל

.rי המשתנה " המיוצג ע(0,0)=(x,y)הצבע בגר יחסי למרחק האופקי מהנקודה

א במקרה זה תהיינה משבצות הרשת , mesh מציירת משטח כמו הפקודה surf(x,y,z,c)הפקודה

:דוגמא הקודמת יתקבל זהי ל(x,y,z,r)עבור נתוני . מלאות

» surf(x,y,z,r)

Page 51: Matlab Book

51

כרשת משבצות בה כל , מאפשרת להמחיש מטריצת מספרי בצורה גרפית pcolor(x,y,z)הפקודה

המשטח המתקבל הוא למעשה . צבע המשבצת תלוי בער האיבר. משבצת מייצגת איבר במטריצה

surf(x,y,z) ללא ציו הווקטורי . במבט מלמעלהx,y ה של המטריצה על פי תתקבל תמונ

). כאשר הראשית בצד שמאל למטה(האינדקסי המתאימי לכל איבר במטריצה

. colorbarי הוספת הפקודה "נית לקבל סקלת צבע ע

דוגמה

» [xi,yi]=meshgrid(-1:0.05:1);

» zi=sqrt(xi.^2+yi.^2); » pcolor(zi) ; » colorbar;

:יתקבל הפלט

ממדית על הפקודה יוצרת תמונה דו.imagesc(z,[cmin cmax])ומה היא פקודה המבצעת פעולה ד

הוא תחו המספרי [cmin cmax] הוא המער וzכאשר . סמ מער מספרי המייצגי צבע

.שעבור יתקבלו הבדלי צבע

Page 52: Matlab Book

52

:1 ל0הצגה גרפית של מטריצת מספרי אקראיי בי דוגמה

» imagesc(rand(30,30),[0 1]);

» colorbar

contour(x,y,z,n) טופוגרפיה( ציור משטח באמצעות קווי שוי גובה(

mesh ,n כמו ב x,y,z). ממדיהמתארת משטח תלת(ממדית הפקודה משרטטת מפת קווי גובה דו

המכיל כווקטור nי הגדרת "נית לאל ציו גבהי מסוימי ע. שמציי את מספר קוי הגובהסקלר

.את הגבהי

.contour3(x,y,z,n)י שימוש בפקודה "ת קווי גובה תלת ממדית תתקבל עמפ

דוגמה

» x=-15:1:15; y=x';

» [xi,yi]=meshgrid(x,y); » r=sqrt(xi.^2+yi.^2)+eps; » z=sin(r)./r; » figure(1) » contour(x,y,z,8); » xlabel('x'); ylabel('y'); » figure(2) » contour3(x,y,z,8); » xlabel('x'); ylabel('y'); zlabel('z');

Page 53: Matlab Book

53

-15 -10 -5 0 5 10 15-15

-10

-5

0

5

10

15

x

y

-15

-10-5

05

1015

-10

0

10

-0.5

0

0.5

1

1.5

xy

z

1figure 2figure

:בצורה הבאה clabelידי הוספת הפקודה הכוללי ג את ציו ער הגובה על, נית לקבל קווי גובה

» [c,h]=contour(x,y,z,n);

» b=clabel(c,h);

. h ווקטור c מטריצה תתקבל גx,y,zבנוס לציור קווי הגובה לפי הקורדינטות , במקרה זה

האיבר השמאלי עליו בכל . מטריצות המתארות קווי גובה שורות בנויה מתת2 בעלת cהמטריצה

האיבר השמאלי תחתו מציי את מספר הנקודות היוצרות , תת מטריצה מציי את גובה הקו הספציפי

.x,yבהמש השורה הראשונה והשניה נמצאות הקאורדינטות , את קו הגובה

h הינו ווקטור עמודה בגודל n שמשיי מספר לכל קו גובה )handle( , לצור זיהוי קו הגובה ושינוי

).'מיקו וכו, צורה, צבע(תכונותיו

יאותרו קווי הגובה המתאימי ולכל אחד מה תצור תווית clable(c,h)באמצעות הפקודה

. המציינת את ער הגובה

.לדוגמא שינוי גודל הפונט, פשר את שינוי התכונות מאbשיו תוויות הטקט לווקטור

» z=peaks(30); % produces an 30-by-30 matrix » [c,h]=contour(z,10); » b=clabel(c,h); » set(b,'fontsize',7); % change the font size to 7

Page 54: Matlab Book

54

[x,y,z]=sphere(n) ור ציור כד

תצייר כדור surf(x,y,z) כ שהפקודה (n+1)*(n+1) בגודל x,y,z בונה מטריצות sphereהפונקציה

. בהתא לצורx,y,zלהזזת הכדור והגדלת רדיוסו יש לשנות את . בגודל יחידה שמרכזו בראשית

.sphere(n)ציור מיידי של כדור יחידה אפשרי באמצעות

דוגמה

» sphere(20)

» [x,y,z]=sphere(20); » x=x.*1.5+1;y=y.*1.5+4;z=z.*1.5+1 » axis('equal');

Page 55: Matlab Book

55

ציור גופי סיבוב בקואורדינטות גליליות

z נבנה תחילה ווקטורי של z=[a,b] בתחו R=f(z) של הפונקציה z לציור גו הסיבוב סביב ציר ה

. על פי התחו Rו

נקבל את המטריצות הקרטזיות לתיאור גו הסיבוב cylinder(R,n)=[’x,y,z]באמצעות הפונקציה

.[0,1] בתחו ’zכאשר

גודל ). z=z’*(b-a)+a ) z’=(z-a)/(b-a) (לציור גו הסיבוב בתחו המקורי נבצע טרנספורמציה

. (length( R),n+1) יהיהx,y,zהמטריצות

דוגמה

a=3;b=10;

z=3:0.1:10; r=(0.5+sin(z).^2).*z.^2; [x,y,zl]=cylinder(r,20); zm=zl*(b-a)+a; surf(x,y,zm) title(' r=0.5+z^2*sin(z)^2 גו הסיבוב של ') »rotbd

Page 56: Matlab Book

56

בפלט תלת מימדי )view point(שינוי כיוו המבט

z y

Elevation(theta) x

Azimuth(phi)

:שינוי כיוו המבט אפשרי בשתי דרכי

האיבר השמאלי , כאשר הקלט הוא ווקטור בעל שני איברי, view([phi,theta])שימוש בפקודה . 1

xyיחסית למישור ה) elevation( והימני זוית ההגבהה zסביב ציר ) Azimuth(הוא זוית הסיבוב

).הזוויות במעלות(

שכיוו כאשר הקלט הוא ווקטור תלת ממדי היוצא מהראשית כ, view([x,y,z])שימוש בפקודה . 2

.אי משמעות לגודל הווקטור אלא רק לכיוונו, המבט הוא מקצה הווקטור לכיוו הראשית

)גו הסיבוב(עבור הציור בעמוד הקודדוגמה

subplot(2,2,1)

mesh(x,y,zm);view([0 1 0]);title('front'); subplot(2,2,2) mesh(x,y,zm);view([1 1 -1]);title('down isometric '); subplot(2,2,3) mesh(x,y,zm);view([0 0 1]);title('top'); subplot(2,2,4) mesh(x,y,zm);view([1 1 1]);title('up isometric '); »proj

Page 57: Matlab Book

57

:ערכי ברירת המחדל של כיוו המבט בציור תלת מימדי

Azimuth(phi)=-37.5o

Elevation(theta)=30o

.rotate3d onידי הפקודה יעשה על) matlab5ב (אמצעות העכבר שינוי כיוו המבט באופ ידני ב

rotate3d offיוצא ממצב זה .rotate3dעובר ממצב למצב .

זוית , זוית הסיבוב שלה, נית לשנות את תכונות המבט בעזרת טיפול במיקו המצלמה matlab- 5 ב

ההגדרות תתבצענה באמצעות הפקודה . הפתיחה ונקודת מרכז התמונה

set(gca,’property’,N).

. הנוכחיaxes משייכת את ההגדרה ל gcaהפקודה

: תכונות חשובות

.x,y,zתמק את המצלמה בנקודה set(gca,’cameraposition’,[x,y,z])הפקודה

ודה תופיעה כ שהנק ,x,y,z תכוו את המצלמה לנקודה set(gca,’cameratarget’,[x,y,z])הפקודה

. הנקודות את כיוו המבט2ביחד ע נקודת מיקו המצלמה מגדירות . במרכז התמונה

, תסובב את המצלמה סביב ווקטור כיוו המבטset(gca,’cameraupvector’,[nx,ny,nz])הפקודה

.יצביע מעלה , על גבי המישור המאונ לווקטור כיוו המבט[nx,ny,nz]כ שהיטלו של הווקטור

Page 58: Matlab Book

58

. של המצלמה) במעלות (degתגדיר את זווית הפתיחה set(gca,’cameraviewangle’,deg)פקודה ה

.ככל שהזוית גדלה שטח הכיסוי גדל כ שהאובייקט קט וההפ

דוגמה

[x,y,z]=sphere(20);

theta=45; theta=pi*theta/180; cp=[2 2 2]; ct=[0 0 0]; n=ct-cp; b=cross([0 0 1],n); zt=cross(n,b); vup=zt.*cos(theta)+b.*sin(theta);%create cameravectorup with 45 degree rotation vup=2*[vup]/norm(vup); surf(x,y,z);%draws the sphere ; axis('equal'); set(gca,'cameraposition',cp); set(gca,'cameratarget',ct); set(gca,'cameraupvector',vup); set(gca,'cameraviewangle',50) hold on; plot3([0 vup(1)],[0 vup(2)],[0 vup(3)],'b'); »camer

Page 59: Matlab Book

59

עיבוד נתוני וסטטיסטיקה

כאשר המידע נמצא במבנה , מאפשרת ביצוע פעולות עיבוד נתוני וסטטיסטיקהMATLABתוכנת

פונקציות . datafunסיות מוגדרות במחיצה הפונקציות הבסי. וקטורי או בעמודות של מטריצות

סטטיסטיקה , התאמת עקומות, כגו עיבוד אותות (toolboxנית למצוא ב, עיבוד נתוני אחרות

).מתקדמת ועוד

כל עמודה במער מייצגת . מתבצעת במבנה של מערכיMATLAB לצור עיבוד ב, טעינת נתוני

.צגת נתוני של דגימה אחתוכל שורה במער מיי, משתני מדידה שוני

לצור עיבוד . ימי31נתוני הטמפרטורה בשלוש ערי נמדדו אחת ליו במש חודש אחד ב דוגמה

. שורות31 עמודות ו3 במבנה של מער בעל MATLAB נכניס את הנתוני ל

» temps =[19 22 26 5 21 26 20 33 39 7 28 28 23 30 39 18 18 30 12 31 33 13 20 37 9 27 38 12 32 26 5 21 39 23 27 39 21 18 33 13 22 26 20 18 27 22 20 39 23 18 39 8 19 38 12 30 39 24 16 30 12 24 39 12 34 37 7 20 29 16 19 30 21 29 25 22 17 34 15 32 33 21 18 39 18 17 25 14 31 35 12 34 33];

:להצגה גרפית של הנתוני

» d=1:31;

Page 60: Matlab Book

60

» plot(d,temps) » title('temps') » xlabel('day') » ylabel('temperature')

:הפלט המתקבל

0 5 10 15 20 25 30 355

10

15

20

25

30

35

40temps

day

temperature

כ שעבור , בדר כלל פקודה לעיבוד נתוני תבצע את פעולת העיבוד על כל ווקטור עמודה בנפרד

. איבריn עמודות יתקבל פלט שהוא ווקטור שורה בעל nקלט שהינו מער בעל

mean(V) – חישוב ממוצע של וקטורV או של עמודות המטריצה V

:meanנשתמש בפונקציה ) tempsבכל עמודה במער (בכל אחת מהערי ' ממוצע הטמפלחישוב

» avg_temps=mean(temps)

avg_temps = 15.4516 24.0645 33.2258

.התקבל ווקטור שורה שאיבריו ה ממוצעי העמודות

א מסודרת בצורה כשהי, temps על המטריצה meanלחישוב ממוצע כללי נוכל להפעיל את הפונקציה

:של ווקטור עמודה

» avg_t=mean(temps(:))

avg_t = 24.2473

:avg_tempsהתוצאה תהיה זהה לממוצע של ווקטור השורה

» avg_t=mean(avg_temps)

avg_t =

Page 61: Matlab Book

61

24.2473

חישוב מינימו ומקסימו של מער

[M,I]=max(X) ,[M,I]=min(X) – מינימו של מטריצה / פקודה המחזירה את המקסימו X.

Iווקטור השורה . Xמקסימלי של כל עמודה במער / יכיל את האיבר המינימלי Mווקטור השורה

הוא האינדקס של I(j) כ ש, )מקסימלי/ מינימלי (יכיל את האינדקסי של האיברי שנמצאו

.X של המטריצה jמקסימלי בעמודה /האיבר המינימלי

:temps המינימלית במטריצה מציאת הטמפרטורהדוגמה

» [min_temps,I]=min(temps)

min_temps = 5 16 25 I = 2 20 25

:tempsמקסימו הגלובלי של /שתי דרכי אפשריות לחישוב המינימו דוגמה

» [min_tot,J]=min(min_temps) % first method

min_tot = 5 J = 1 » temps(I(J),J) ans = 5

» [min_tot,k]=min(temps(:)) % second method min_tot = 5 k = 2

Page 62: Matlab Book

62

» temps(k) ans = 5

הוא לנפות מתו מער איברי הגדולי או קטני מער min/max שימוש נוס של פקודות ה

.קטני ביותר משתי מטריצות/לימסוי או לחילופי לבנות מטריצה מאיברי מתאימי גדו

דוגמה

» X=[1 2 3;4 5 6];

» Y=[0 3 0;4 6 1]; » min(X,3) ans = 1 2 3 3 3 3 » [X]=max(X,n) ans = 1 3 3 4 6 6

rand(m,n) – קבלת מער אקראי במימד m x n.

R יהיה מער אקראי בגודל n×m , ומפולגי בצורה אחידה1 ל0כ שאיבריו ה מספרי בי .

randn(m,n) –קבלת מער אקראי שאיבריו מפולגי התפלגות נורמלית

Rn יהיה מער אקראי בגודל M N× ע ממוצע ) התפלגות נורמלית( כ שאיבריו מפולגי גאוסית

.1 וסטיית תק 0

Page 63: Matlab Book

63

:MATLABהטבלה הבאה מרכזת את פונקציות עיבוד הנתוני העיקריות ב

תאור הפונקציה

cumprod וקטור/מכפלה מצטברת של מטריצה

cumsum וקטור/סכו מצטבר של מטריצה

cumtrapz מצטברת–אינטגרציה נומרית בשיטת הטרפז

diff פונקצית הפרש וקירוב נגזרת

max מציאת איבר מקסימלי

mean חישוב הממוצע

median מציאת ער אמצעי

min מציאת איבר מינימלי

prod סכו איברי

sort וקטור בסדר עולה/מיו מטריצה

sortrows מיו שורות בסדר עולה

std חישוב סטיית תק

sum וקטורחישוב סכו איברי ב

trapz אינטגרציה נומרית בשיטת הטרפז

Page 64: Matlab Book

64

פולינומי nיצוג פולינו ממעלה , לדוגמא. ידי וקטור שורה המכיל את מקדמיו עלMATLAB פולינו מיוצג ב

)a X a X a X a X an n nn n1 2

13

21+ + +− −

+. . . . . יהיהPבווקטור ) .

P=[a1 a2 a3 ..............an an+1] .

.יכלול ג מקדמי השווי אפסוקטור המקדמי

R=roots(P) חישוב שורשי של פולינו

:R יתקבלו בווקטור שורה Pשורשי הפולינו המיוצג בווקטור השורה דוגמה

» P

P = 1 -12 0 25 116 » r=roots(P) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i

פעולות בפולינומי

כדי לחבר שני פולינומי יש לייצג אות בשני ווקטורי . הפעולה מתבצעת לפי כללי חיבור ווקטורי

).אפשר להוסי אפסי משמאל לפולינו מהמעלה היותר נמוכה, א יש צור(בעלי ממד זהה

)חיבור הפולינומי דוגמה ) ( )X X X X3 2 22 3 4 1+ + + + +:

» [1 2 3 4]+[0 1 0 1]

ans = 1 3 3 5

C=conv(A,B) –כפל פולינומי

.B וA תהיה הייצוג הווקטורי של מכפלת הפולינומי Cהתוצאה בווקטור השורה

Page 65: Matlab Book

65

דוגמה

» A=[1 4 9 16 0 1];

» B=[1 2 3 4]; » C=conv(A,B) C= 1 6 20 50 75 85 66 3 4

[C,R] = deconv(A,B) חלוקת פולינומי

.A=C*B+R כ ש R ושארית C תית פולינו B בפולינו Aחלוקת פולינו

דוגמה

» A=[6 8 19 -3 -3 -24]; » B=[3 4 5];

» [C,R]=deconv(A,B) C = 2 0 3 -5 R = 0 0 0 0 2 1

dP=polyder(P) –נגזרת של פולינו

חישוב הביטוי דוגמה( )d

dXX X X X X3 2 22 3 4 3 4 3+ + + = + +

:

» polyder([1 2 3 4])

ans = 3 4 3

Y=polyval(P,a) – חישוב ער הפולינו בנקודה a

: ומחשבת את ערכוP בפולינו aהפקודה מציבה את

Page 66: Matlab Book

66

1nn2n

31n

2n

11nn2n

31n

2n

1 aaa......aaaaaaYaxa......xaxaxaP +−−

+−− +++=⇒+++=

כ שכל איבר בה יהיה ער הפולינו , בגודל זההY תתקבל מטריצה m×nבגודל היא מטריצה aא

.a בנקודה המתאימה ב

532שירטוט הפולינו דוגמה 3 −+ xx [2,2-] בתחו:

» a=[-2:0.1:2];

» P=[ 2 0 3 -5]; » Y=polyval(P,a); » plot(a,Y)

:הפלט המתקבל

P=poly(R) –סמ שורשיו חישוב פולינו על

.Rיהיו השורשי המופיעי בווקטור השורה , Pלפולינו המתקבל

דוגמה

» p=poly([9 8 1])

p = 1 -18 89 -72 » R=roots(p) R = 9.0000 8.0000 1.0000

Page 67: Matlab Book

67

[R,P,K]=residue(B,A) פירוק מנת פולינומי לגורמי

קרי רבי קיי צור בפירוק מנת פולינומי במ

a X a X a X ab X b X b X b

n nn n

m mm m

1 21

1

1 21

1

+ + + ++ + + +

−+

−+

. . . .

. . . .

: לסכו מהצורה

cX r

cX r

cX r

km

m

1

1

2

2−+

−+ +

−+. . . . . . . .

. פעולה זו נקראת פירוק לשברי חלקיי

מתקבלי Rבווקטור העמודה . הוא פולינו המונהB הוא פולינו המכנה וA, ל"בפקודה הנ

(r1,r2...rm) מתקבלי שורשי המכני Pבווקטור העמודה , (c1,c2..cm)מקדמי המוני לאחר הפירוק

).א קיי כזה( מתקבל פולינו השארית kובווקטור דוגמה

): פירוק הביטוי )( )( ) 01X

6667.13X

54X

6667.64X3X1X

20X10 ++

++

++

−=+++

+

» A=[10 20];

» B=poly([-1 -3 -4]) B = 1 8 19 12 » [R,P,k]=residue(A,B) R = -6.6667 5.0000 1.6667 P = -4.0000 -3.0000 -1.0000 k = []

, נית לחשב באמצעות אותה פונקציה, כלומר הפיכת הסכו למנת פולינומי, את הפעולה ההפוכה

:residue(R,P,K)=[B,A] א הפע ע שלושה נתוני קלט ושני נתוני פלט

Page 68: Matlab Book

68

דוגמה

» [A,B]=residue(R,P,k)

A = 0.0000 10.0000 20.0000 B = 1.0000 8.0000 19.0000 12.0000

Y=polider(A,B) –נגזרת של מכפלה

.B וA נגזרת של מכפלת הפולינומי Y נקבל ב

[Q,D]=polider(A,B) –נגזרת של מנה

.B/A היא הנגזרת של D/Q כ שD ומכנה Qנקבל מונה דוגמה

» A=[2 5 1 -3 0];

» B=[1 7 0 -4 6 5]; » y=polyder(A,B) y = 18 152 252 -24 -145 144 129 -26 -15 » [Q,D]=polyder(A,B) Q = -2 -10 -38 -18 79 100 69 10 -15 D = 1 14 49 -8 -44 94 86 -48 -4 60 25

Page 69: Matlab Book

69

אינטרפולציה

, fידי מציאת פונקציה על, אינטרפולציה היא דר להערכת ערכי פונקציה בי נקודות המדידה

:כלומר, שערכיה בנקודות המדידה שווי לערכי המדודי

( )Y f Xi i=

למשל פקודת כ. שעבור נקודות מדידה רבות יותר האינטרפולציה תהיה מדוייקת יותר, ברור א כ

ככל . זוהי אינטרפולציה ליניארית. מחברת בקו ישר בי נקודות המדידה, כברירת מחדלplot ה

. הדיוק יהיה גבוה יותרשהתחו יכלול נקודות רבות יותר

):הקו החלק( נקודות 60ו ) הקו המקוטע( נקודות 6אינטרפולציה ליניארית באמצעות דגימת דוגמה

» x1=linspace(0,2*pi,60);

» x2=linspace(0,2*pi,6); » plot(x1,sin(x1),'g',x2,sin(x2),'r');

:הפלט המתקבל

אינטרפולציה חד מימדית

YI=interp1(X,Y,XI) –אינטרפולציה ליניארית

ווקטור ערכי המדידה בנקודות Yבאמצעות פקודה זו נקבל עבור , ל" שבדוגמה הנplot בדיוק כמו ב

X ,קטור העמודה את ערכי ווYI , שהינ ערכי הפונקציה בנקודות המצוינות בווקטורXI . איבריXI

. חייבי להיות מונוטונייXאיברי . Xחייבי להיות בתחו איברי

Page 70: Matlab Book

70

שיטות נוספות לאינטרפולציה

YI=interp1(X,Y,XI,'method') –הפעלת אינטרפולציה בשיטה מסויימת

: על סמ האילוצי הבאי(implicit)בשיטה זו נבנית מערכת משוואות

כל נקודה נוספת תשמש לחישוב פולינו . 3דר שלוש הנקודות הראשונות יעבור פולינו מסדר

כאשר נגזרתו הראשונה והשניה של פולינו זה בנקודה , העובר דרכה ודר הנקודה שמשמאלה

בכ מתקבלת רציפות ג . באותה נקודה) משמאל(השמאלית תהיינה שוות לנגזרות הפולינו הקוד

.בנגזרת השנייה בי כל שני פולינומי סמוכי

.CUBIC SPLINES נקראת השיטה 3מאחר ומדובר בפולינו מסדר

. CUBICלפיה האילו הוא רק לגבי הנגזרת הראשונה נקראת , שיטה נוספת

דוגמה

» x=[0:0.1:1];

» y=[1 2 4 5 3 2 4 8 9 7.5 6.4]; » x1=[0:0.01:1]; » y1=interp1(x,y,x1,'spline'); » plot(x,y,'og',x1,y1,'r') » plot(x,y,'g',x1,y1,'r')

:הפלט המתקבל

Page 71: Matlab Book

71

קירובי

, אפשר להתאי מספר רב של פונקציות, לכל אוס נתוני ממדידה או מחישובי בדידי

כל פונקציה כזאת אפשר לחשב את עבור. שעקומותיה מתנהגות באופ דומה לנתוני המדידה

בדר כלל השגיאה הכללית מוגדרת כסכו הריבועי של . המקדמי עבור השגיאה תהיה מינימלית

. ההפרשי בי ערכי הפונקציה המקורבת בנקודות המדידה לבי הערכי המדודי בנקודות אלו

:כלומר

( )e f x yi ii

n

= −=∑ ( ) 2

1

לפי כל אחד eיש לגזור את , ה כ שהשגיאה תהיה מינימליתעל מנת למצוא את מקדמי הפונקצי

.(least squares)שיטה זו נקראת ריבועי פחותי . מהמקדמי ולהשוות לאפס

p=polyfit(x,y,n) –התאמת פולינו

מהווה את ערכי xהווקטור . n לחישוב מקדמי פולינו מסדר least squaresפונקציה זו מבצעת

. את ערכי המשתנה התלויy ו,תלוי המשתנה הבלתי

. מתקבלי מקדמי הפולינוpבווקטור השורה

:נניח שבמדידה מסויימת התקבלו התוצאות הבאות דוגמה

» x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1] ; » y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];

: עבורו השגיאה מינימלית2 גר הפולינו מסדר תוצאות המדידה וכ

» n=2;

» p=polyfit(x,y,n); » xi=linspace(min(x),max(x),100); » yi=polyval(p,xi); » plot(x,y,'og',xi,yi,'r') » xlabel('x') » ylabel('y=f(x)') » title('second order curve fitting')

Page 72: Matlab Book

72

עבור סדר , כמו כ. ו האופטימלי אינו בהכרח הגבוה ביותר והוא תלוי בתוצאות המדידהסדר הפולינ

n דרושי לפחות n+1 במקרה זה יתקבל פולינו שעובר דר , )מקדמי הפולינו' כמס( נקודות מדידה

n+1 מצב שאינו בהכרח אופטימלי הנקודות .

:ל "עבור נתוני המדידה הנ דוגמה

» p=polyfit(x,y,max(size(x))-1);

» xi=linspace(min(x),max(x),100); » yi=polyval(p,xi); » plot(x,y,'og',xi,yi,'r') » xlabel('x') » ylabel('y=f(x)') » title('second order curve fitting')

:הפלט המתקבל

אינטגרציה או , ציהכמו שנית לראות הקירוב אמנ עובר בכל הנקודות א הוא גרוע לצור אינטרפול

.נגזרת

Page 73: Matlab Book

73

אנליזה נומרית

תו שימוש בקירובי , אנליזה נומרית הינה תחו מתמטי בה מחפשי פתרונות לבעיות מתמטיות

.נומריי והתחשבות בשגיאות ובתנאי קצה

MATLABמספק כלי נומריי לפעולות הבאות :

שרטוט פונקציה •

חישוב נקודות קיצו •

מציאת אפסי •

אינטגרציה •

נגזרות •

פתרו משוואות דיפרנציאליות •

שרטוט פונקציה

fplot –שרטוט גר של פונקציה

את . כוללת אלגורית המבטיח שהשרטוט לא יחסיר פרטי כתוצאה מתהלי הדגימה fplotהפקודה

. M-file function הפונקציה נית לשמור כמשתנה מחרוזת או כ

דוגמה

:שירטוט הפונקציה

( )( ) ( )f xx - 0.3 x - 0.9

=+

++

−1

0 011

0 0462 2. 0בקטע , . x 2≤ :humps.mהתוכנית . ≥

function y = humps(x)

y = 1 ./ ((x-.3).^2 + .01) + 1 ./ ((x-.9).^2 + .04) - 6; :הרצת התוכנית

» fplot('humps',[0 2],'b') » title('FPLOT of humps')

:הפלט המתקבל

Page 74: Matlab Book

74

0 0.5 1 1.5 2-20

0

20

40

60

80

100FPLOT of humps

דוגמה

שרטוט הפונקציה ( ) ( )f x e sin x-x= ⋅ 0 בקטע 2⋅ ≤ ≤x הפונקציה מוגדרת כמשתנה , בדוגמה זו. 8

.מחרוזת

» f='2*exp(-x).*sin(x)'; » fplot(f,[0 8],'b') » title(f),xlabel('x')

0 1 2 3 4 5 6 7 8-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

x

2*exp(-x).*sin(x)

)מינימו מקסימו(מציאת נקודות קיצו

שתי פונקציות MATLAB ב. ת לאפסידי השוואת הנגזרמציאת נקודות קיצו מחושבת אנליטית על

.המאפשרות חישוב נומרי של נקודת מינימו

fmin מציאת מינימו מקומי של פונקציה בעלת משתנה אחד

fmins מציאת מינימו של פונקציה מרובת משתני

Page 75: Matlab Book

75

כאשר . ידי המשתמשהכוונה במושג מינימו מקומי היא למינימו בתו קטע מסוי הנקבע על

. f(x)-מחשבי מינימו של , י למצוא מקסימומעונינ

. M-file function את הפונקציה אפשר לשמור כמשתנה מחרוזת או כ

התוכנית הבאה משמשת לחישוב נקודות מינימו ומקסימו של הפונקציה דוגמה

( ) ( )f x e sin x-x= ⋅ ):exp_fmin.m(נכתוב תוכנית . שהוצגה בדוגמא האחרונה2⋅

% exp_fmin.m fn='2*exp(-x).*sin(x)'; % define function for min xmin=fmin(fn,2,5) % search over rang 2<x<5 x=xmin; % need x since fn has x as its variable ymin=eval(fn) % evaluate at xmin fx='-2*exp(-x).*sin(x)'; % defin for max: note minus sign xmax=fmin(fx,0,3) % search over range 0<x<3 x=xmax; ymax=eval(fn) % evaluate at xmax

:הרצת התוכנית

» exp_fmin xmin = 3.9270 ymin = -0.0279 xmax = 0.7854 ymax = 0.6448

.Xo מצייני ווקטור ראשוני להתכנסות , במקו לציי תחו. מעט שונה fminsהשימוש בפקודה

zממדית מציאת מינימו של הפונקציה הדו דוגמה = x y2 (1,1) = (x,y) באזור הקרוב ל+2

):two_var.mתוכנית (

function z=two_var(v); x=v(1); y=v(2);

: לבעיה זו) מדויק( פתרון אנליטי

Xmin =

Xmax =

π

π4

0 785

5393

⋅≈

.

.

Page 76: Matlab Book

76

z=x.^2+y.^2; :הרצת התוכנית

» v=[1 1]; » xymin=fmins('two_var',v) xymin = 1.0e-05 * -0.1148 -0.6231 » Zmin=two_var(xymin) % verifing the result Zmin = 4.0138e-011

מציאת אפסי

fzero מציאת אפסי של פונקציה בעלת משתנה יחיד

פועלת א ורק על fzeroהפקודה . ה המקומות שבה ער הפונקציה הוא אפסאפסי של פונקציה

בנוס לציו ש הפונקציה יש לקבוע ער ראשוני . M-file function פונקציה המוגדרת כ

.להתכנסות

:x = 1.2הקרוב ביותר לנקודה , humpsמציאת אפס של הפונקציה דוגמה

» xzero=fzero('humps',1.2) % look for zero near 1.2

xzero = 1.2995 » yzero=humps(xzero) % evaluate at xzero yzero = 3.5527e-015

= g(x)אפשר להגדיר פונקציה חדשה , f(x) = c, א מעוניני בנקודת חיתו בי פונקציה וקבוע

f(x) - cולפתור ב MATLABי מציאת אפסי של " עg(x).

(0,0) = (x,y): פתרון אנליטי

Page 77: Matlab Book

77

רציהאינטג

ידי סיכו שטחי הטרפזי הנוצרי מחיבור מחשבת שטח מתחת לפונקציה עלtrapz הפקודה

.ליניארי של נקודות דגימה

דוגמה

∆מרווח דגימה . x<2>1- בתחו humpsחישוב השטח מתחת לפונקציה x = 0.2:

» x=0:0.2:2; » y=humps(x); » area=trapz(x,y) % call trapz just like the plot command area = 26.4616

:קירוב גס של האינטגרל

-1 -0 .5 0 0 .5 1 1 .5 2-2 0

0

2 0

4 0

6 0

8 0

1 0 0

x

y=

hu

mp

s(x

)

R o u g h Tra p e z o id a l A p p ro x im a t io n to A re a U n d e r C u rve

. ככל שנקטי את מרווח הדגימה תתקבל תוצאה קרובה יותר לשטח האמיתי

∆קירוב יותר טוב נקבל כאשר נבחר x = 0.02

» x=-1:0.02:2; % better approximation » y=humps(x); » area=trapz(x,y) area = 26.3449

Page 78: Matlab Book

78

:פקודות אינטגרציה נוספות

quad אינטגרציה בשיטת Simpson

quad8 אינטגרציה בשיטת Newton Cotes

כאשר משתמשי בפקודות אלה אי צור לקבוע . שתי השיטות מדויקות יותר משיטת הטרפזי

.M-file function את הפונקציה צרי לשמור כ, מרווחי דגימה

:x < 2 > 1- בתחו humpsחישוב השטח מתחת לפונקציה דוגמה

» area=quad('humps',-1,2) % find area between -1 and 2

area = 26.3450 » area=quad8('humps',-1,2) % find area between -1 and 2 area = 26.3450

נגזרות

polyder(p) זו משמשת לגזירת הפולינו פקודה p.

נתונה סידרה של נקודות במישור . ה שני ווקטורי המכילי אוס תוצאות של ניסויy וx דוגמה

x ,y .מעוניני לחשב בקרוב את הנגזרת

dydx.

» x=0:0.1:1; » y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; % data » p=polyfit(x,y,2) % find polynomial coefficients p = -9.8108 20.1293 -0.0317 » xi=linspace(0,1,100); % drawing the result polynom » z=polyval(p,xi); % evaluate polynomial » plot(x,y,'o',x,y,xi,z,':') » xlabel('x'),ylabel('y=f(x)'),title('Second Order Curve Fitting')

Page 79: Matlab Book

79

:MATLAB נגזור ב

» pd=polyder(p)

pd = -19.6217 20.1293 » z=polyval(pd,xi); % evaluate derivative » plot(xi,z) » plot(xi,z,'b') » xlabel('x'),ylabel('dy/dx'),title('Derivative of a Curve Fit Polynomial')

0 0 . 2 0 . 4 0 . 6 0 . 8 10

5

1 0

1 5

2 0

2 5

x

dy

/dx

D e riva t ive o f a C u rve F i t P o ly n o m ia l

0 0.2 0.4 0.6 0.8 1-2

0

2

4

6

8

10

12

x

y=f(x

)

Second Order Curve Fitting

Page 80: Matlab Book

80

diffקרוב נגזרת באמצעות הפקודה

הגדרה של נגזרת

dxdy

h 0

f (x + h) - f (x)(x + h) - x

=→lim

h > 0 ( dx( קרוב

dyf (x + h) - f (x)

(x + h) - x≈

דוגמה

):cos(x)התוצאה היא קרוב של ( sin(x)נגזרת של

» x=linspace(-pi,pi,1000);

» y=sin(x); » dy=diff(y)./diff(x); % compute differences and use array division » dx=x(1:length(x)-1); % create new x axis since dy is shorter than y » plot(x,y,dx,dy) » title('Approximate Derivative Using Diff') » legend('sin(x)','cos(x)')

sin(x)cos(x)

-4 -3 -2 -1 0 1 2 3 4-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Approximate Derivative Using Diff

במקרה זה יש להשתמש . לגזור אנליטית מומל א ורק כאשר לא נית diffהשימוש בפקודה

אינו מומל כאשר מדובר בתוצאות של diffשימוש בפקודה . במרווחי דגימה קטני ככול האפשר

) .כמו בדוגמה הקודמת(ניסוי

Page 81: Matlab Book

81

) בלבד 5Matlab ב (Cell arraysמערכי תאי

משתנה הקיי בהיכול להכיל כל סוג של, מער תאי הוא מער אשר כל אלמנט בו הוא תא

MATLAB .תא אחר מחרוזת ותא נוס , תא אחד בתו מער תאי יכול להכיל מטריצה, לדוגמא

.מספר מרוכב

:מבנה אפשרי של מער תאי, לדוגמה

cell(1,3)

[0.25+3j 8 - 16j

34 + 5j 7 + 92j]

cell(1,2)

[‘Anne smith’

‘ 9 / 12 / 94‘]

cell(1,1)

[3 4 2

9 7 6

8 5 1 ]

cell(2,3)

cell(2,2)

[ 3 4

7 6 ]

cell(2,1)

[1.43 2.98 5.76]

:בניית מער תאי אפשרית בשתי דרכי

.{}שימוש במשפטי השמה וסוגריי מסולסלי . 1

:בניית המער המוצג למעלה דוגמה

» A(1,1)={[3 4 2;9 7 6;8 5 1]};

» A(1,2)={char('Anne smith','9/12/94')}; » A(1,3)={[0.25 8;34 7]+i*[3 -16;5 92]}; » A(2,1)={[1.43 2.98 5.67]}; » A(2,2)={[3 4;7 6]}; » A(2,3)={{['text'],[4 2 ;1 5];[4 2 7],[0.02+8i]}}; » A A = [3x3 double] [2x10 char ] [2x2 double]

[‘text’ [4 2

1 5]

[4 2 7] [0.02+8j]

Page 82: Matlab Book

82

[1x3 double] [2x2 double] {2x2 cell }

ולאחר A=cell(m,n) – באמצעות הפקודה n עלm בגודלAבנייה מוקדמת של מער התאי . 2

מיקו ווקטור בתא , לדוגמה. ידי ציו מיקומ בסוגריי מסולסלימכ השמת ערכי בתאי על

)i,j ( A{i,j}=[1 2 3 ].

.הבנייה המוקדמת מקצרת את זמ הריצה של התוכנית א אינה הכרחית

.celldisp(A) י שימוש בפקודה "ית ע אפשרAהצגת תכולתו של מער תאי

דוגמה

» celldisp(A)

A{1,1} = 3 4 2 9 7 6 8 5 1 A{2,1} = 1.4300 2.9800 5.6700 A{1,2} = Anne smith 9/12/94 A{2,2} = 3 4 7 6 A{1,3} = 0.2500+ 3.0000i 8.0000-16.0000i 34.0000+ 5.0000i 7.0000+92.0000i A{2,3}{1,1} = text A{2,3}{2,1} = 4 2 7 A{2,3}{1,2} = 4 2

Page 83: Matlab Book

83

1 5 A{2,3}{2,2} = 0.0200+ 8.0000i

.cellplot(A)י שימוש בפקודה " אפשרית עA הצגה גרפית של מער התאי

» cellplot(A)

שימוש באינדקסי

.י ציו מיקומו בסוגריי מסולסלי"קריאה לתא מסוי תבוצע ע

דוגמה

» name=A{1,2}

name = Anne smith 9/12/94

י ציו מיקו התא בסוגריי "תתבצע ע, הנמצא בתו תא מסוי, קריאה לער מסוי מתו מער

.בסוגרי רגילי, מיקו הער במער, ומימינ בהמש. מסולסלי

דוגמה

» A{1,1}(2,2)

ans =

Page 84: Matlab Book

84

7 » A{2,3}{1,2}(2,2) ans = 5

כ שכל איבר בשורה ייצג מיקו של תא , נית להשתמש בנקודתיי לצור ציו שורה של אינדקסי

).הדבר שקול לשורה המכילה את האינדקסי ע פסיקי ביניה(

דוגמה

» b{1,1}=[1 2 3];

» b{1,2}=[2 9 4]; » b{2,1}=[5 6 7]; » b{2,2}=[8 0 2]; » b b = [1x3 double] [1x3 double] [1x3 double] [1x3 double] » b{1:2,2} ans = 2 9 4 ans = 8 0 2 » cross(b{1:2,2}) ans = 18 28 -72

)זמני( םלשנו םת

Page 85: Matlab Book

85

ל"רשימת פקודות שלא נלמדו או שנלמדו א אינ מופיעות בקוב הנ repmat([1 3 5],2,4) gcd(x,y) lcm(x,y) [t,n]=rat(x) floops floops(0) fliplr(A) flipud(A) rot90(A) Strings

'text' : ים וסימנים מיוחדים הכוללת אותיות מספר(str=string)הגדרת שמות משתנים כמחרוזת abs(str) length num2str mat2str lower(str) upper(str) disp(‘str’) input(‘out’,in) mod(a,b) factor(a) primes(a) isprime(a) intersect(a,b) union(a,b) unique(a) cell matrix cell(m,n) celldisp(B) cellplot(B)

Page 86: Matlab Book

86

hist(x) bar(x) stairs stem pie det(A) rank(A) inv(A) ( sparse matrices ) - לא נלמד בכל הקבוצות sparse(A) sparse(m,n) sparse(u,v,a) find(x) [u,v]=find(A) [u,v,s]=find(A) full(sparse_matrix) randperm(8) text(x,y,’text’) gtext(‘text’) legend(‘text1’,’text2’, . . . ) axis([xmin xmax ymin ymax]) axis auto axis square axis tight axis off axis on figure(n) fplot(‘function’,[xmin xmax]) zoom [x,y]=ginput(n) plotyy(x,y,x,z) – two different y scales semilogx(x,y) semilogy(x,y) loglog(x,y)

Page 87: Matlab Book

87

fill(x,y,’color’) 3-D Graphics [X,Y]=meshgrid(x,y) Z=function(X,Y) mesh(X,Y,Z) surf(X,Y,Z) contour(X,Y,Z) plot3(x,y,z,’symbol’) plot3(x1,y1,z1,’symbol1’, x2,y2,z2,’symbol2’, ….) zlabel(‘text’) text(x,y,z,’text’) axis([xmin xmax ymin ymax zmin zmax]) cylinder(r) cylinder(r,n) Polinomials conv(a,b) [q,r]=deconv(numerator,denumerator)

)()()(

)()(

xrdenumeratoxrxq

xrdenumeratoxnumerator +=

)()()()( xrxrdenumeratoxqxnumerator += Functions fplot(‘function’,[xmin xmax]) fzero(‘function’,Xo) fmim(‘function’,xmin,xmax) max of function – with: fmin(‘minus_function’, xmin,xmax) Interpolation yi=interp1(x,y,xi,’method’) method - nearest linear