matlab אובמ - technion

146
ל מבוא- Matlab מאת פלג דורי גירסה1.0 דצמבר2002

Upload: others

Post on 16-Oct-2021

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matlab אובמ - Technion

Matlab-מבוא ל

מאת

דורי פלג

2002 דצמבר – 1.0גירסה

Page 2: Matlab אובמ - Technion

Matlab-מבוא ל

2

מבוא ומוטיבציה

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

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

Matrix Laboratory. . החוסך תכנות רב מהמשתמש) built-in(מספר רב של פונקציות מובנות .2 toolboxמאגר נרחב של פונקציות המיועדות לתחומים הנדסיים ספציפיים השמורים בספריות .3

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

מטרת חוברת זו היא רק להציג . Matlabחוברת זו איננה מתימרת להציג את כל ההיקף הרחב של שפת הלימוד - Matlab-את הידע וההבנה הבסיסיים הנדרשים כדי לאפשר את השיטה האמיתית ללמידה ב

. י העזרה הנרחביםהעצמי דרך מדריכ

. 6Matlabחוברת זו נכתבה עבור

Page 3: Matlab אובמ - Technion

Matlab-מבוא ל

3

תוכן עניינים

2........................................................................................................................................מבוא ומוטיבציה MATLAB..........................................................................................................................6הכרת סביבת . 1

6........................................................................................................................ פרוט החלונות ושימושם1.1 MATLAB...........................................................................................................................7 סוגי קבצי 1.2 MATLAB..............................................................................................................7של HELP- שימוש ב1.3 8................................................................................................................ כללים לקביעת שמות משתנים1.4 COMMAND WINDOW..........................................................................................................8- תצוגה ב1.5 MATLAB...........................................................................................................................8- מספרים ב1.6 MATLAB.............................................................................................................................9- יציאה מ1.7

10.....................................................................................................................................הגדרת מטריצות. 2 10..................................................................................................................................... הגדרה ידנית2.1

11.............................................................................................................. הכנסת ביטויים למשתנים2.1.1 11...................................................................................................... מדידת גודל מטריצות ווקטורים2.1.2

12.................................................................................................................טריצות פונקציות להגדרת מ2.2 12............................................................................................................... מטריצות אפסים ואחדים2.2.1 12...................................................................................................................... מטריצה אלכסונית2.2.2 13...................................................................................................................... מטריצות אקראיות2.2.3

14...................................................................................................... יצירת וקטורים בעלי ערכים עוקבים2.3 ARRAY EDITOR......................................................................................................................15 חלון 2.4

17..........................................................................................................................מניפולציה של מטריצות. 3 17.......................................................................................................................... אינדקסים למטריצות3.1

sort..................................................................................................................19- וfind פונקציות 3.1.1 20......................................................................................................................... אופרטורים מטריציים3.2

21............................................................................................................................... דטרמיננטה3.2.1 21........................................................................................................................... היפוך מטריצה3.2.2

22............................................................................................................................... אופרטור הנקודה3.3 22.......................................................................................................... שימושים לאופרטור הנקודה3.3.1

24......................................................................................................................... פונקציות סכימה וכפל3.4 25...................................................................... ייצוגים של סכומים באמצעות מכפלת וקטורים ומטריצות3.4.1 prod.....................................................................................................................26 פונקצית כפל 3.4.2

26................................................................................................................................יצות שכפול מטר3.5 repmat.......................................................................................................................26 פונקצית 3.5.1 meshgrid....................................................................................................................27 פונקצית 3.5.2 kron...........................................................................................................................29ת פונקצי3.5.2

30............................................................................................................................ היפוך סדר מטריצה3.6 30.......................................................................................................... פתירת מערכת משוואות לינארית3.7 31...................................................................................................................... שמירת וטעינת משתנים3.8 COMMAND WINDOW........................................................................................31- קבלת והצגת מידע ל3.9

31................................................................................................................................... מחרוזות3.9.1 Command Window.............................................................................................32- הצגת מידע ב3.9.2 Command Window...........................................................................................33- קבלת מידע מה3.9.3

34.............................................................................................................................................מבני מידע. 4 34................................................................................................................ממדיים- מערכים נומריים רב4.1

35........................................................................................................................ שינוי ממדי מערך4.1.1 CELL ARRAYS(............................................................................................................37( מערכי תאים 4.2 STRUCTURE.........................................................................................................................40 מערכי 4.3

structure.............................................................................................................41 גישה למערכי 4.3.1 43...................................................................................................................................ממדית-גרפיקה דו. 5

PLOT..................................................................................................................................44 פונקצית 5.1 44................................................................................................................ שרטוט גרף של נקודות5.1.1 47.................................................................................................................... יצירת גרף של קווים5.1.2 49.......................................................................................................... שרטוט מספרים קומפלקסים5.1.3

Page 4: Matlab אובמ - Technion

Matlab-מבוא ל

4

51........................................................................................................ שרטוט מספר פונקציות בגרף בודד5.2 51............................................................................מטריצה מכילה את וקטורי הפונקציות, וקטור x ציר 5.2.1 52............................................................................ ווקטורי הפונקציותx צמדי וקטורים מיצגים את צירי 5.2.2 hold...........................................................................................................................54 פונקצית 5.2.3 55........................................................................................ סיכום יתרונות וחסרונות של צורות רישום5.2.4

56....................................................................................................................... הוספת סימונים לגרפים5.3 57................................................................................................................. רישום סימנים מיוחדים5.3.1 57............................................................................................................................ הוספת כותרת5.3.2 y............................................................................................................57- וx הוספת כותרות לציר 5.3.3 57............................................................................................................................. הוספת טקסט5.3.4 59..................................................................................................................... הוספת תיבת מקרא5.3.5 59........................................................................................................... הוספת סטטיסטיקה בסיסית5.3.6 60..................................................................................................................... הוספת קווים וחצים5.3.7 60........................................................................................................ סיכום הוספת סימונים לגרפים5.3.8 61........................................................................אמצעות פקודות קביעת תכונות של אובייקטים גרפיים ב5.3.9

FILL...................................................................................................................................62 פונקצית 5.4 PLOTYY.............................................................................................................................63 פונקצית 5.5 63............................................................................................................רכים ישירות מהגרפים קריאת ע5.6 SUBPLOT..............................................................................64 השמת מספר גרפים יחד באמצעות פונקצית 5.7

66.................................................................................................................................גרפיקה תלת ממדית. 6 66............................................................................................................................. קווים תלת ממדיים6.1 68......................................................................................................................... משטחים תלת ממדיים6.2 76....................................................................................................................................... קווי מתאר6.3 79......................................................................................................... הצגת מספר משטחים על גרף יחיד6.4

81.......................................................................................................................................שליטה בגרפים. 7 81.......................................................................................................................... שליטה ידנית בגרפים7.1 HANDLE GRAPHICS...................................................................................................83 אובייקטים של 7.2

85................................................................... יצירת גרפים באמצעות הפונקציות הבסיסיות ליצירת גרפים7.2.1 86........................................................................................ קבלת וקביעת תכונות של אובייקט גרפיקה7.2.2

EDITOR/DEBUGGER..............................................................................................................88חלון. 8 89.................................................................................................................................... יצירת הערות8.1 89...................................................................................................................................... מלות מפתח8.2 89......................................................................................................................... מציאת והחלפת תווים8.3 BOOKMARK(.....................................................................................................................90( סימנייה 8.4 90............................................................................................................................ קיצורים שימושיים8.5

FLOW CONTROL(......................................................................................................91(בקרת זרימה . 9 IF.........................................................................................................................................93 פקודת 9.1

else if.................................................................................................................93- וelse פקודות 9.1.1 SWITCH.............................................................................................................................95 פונקצית 9.2 CATCH....................................................................................................................96-ו TRY פונקציות 9.3 WHILE..................................................................................................................................97 לולאת 9.4 FOR.....................................................................................................................................98 לולאות 9.5

98............................................................................................................................ וקטור אינדקס9.5.1 99........................................................................................ הצבת איברים במטריצה באמצעות לולאות9.5.2

9.6 CONTINUE...................................................................................................................................101 9.7 BREAK........................................................................................................................................102 M.........................................................................................................103. יציאה מוקדמת מהרצת קבצי 9.8

104.................................................................................................................................כתיבת פונקציות. 10 NARGIN ,NARGOUT ,NARGCHK.....................................................................................106 פונקציות 10.1

nargin) number of input arguments(.....................................................................106 פונקצית 10.1.1 nargout) number of output arguments(.................................................................106 פונקצית 10.1.2 nargchk.................................................................................................................108 פונקצית 10.1.3

109................................................................................................................... פונקציות של פונקציות10.2 feval.........................................................................109נקצית ס שמן באמצעות פו" ביצוע פונקציות ע10.2.1 112....................................................... הגדרת פונקציות המקבלות מספר בלתי מוגדר מראש של משתנים10.2.2

Page 5: Matlab אובמ - Technion

Matlab-מבוא ל

5

120.......................................................................................................................... משתנים גלובליים10.3 121................................................................................................................................ תת פונקציות10.4 TOOLBOX.........................................................................................................................122 יצירת 10.5

DEBUGGING(.............................................................................................123(מציאת ותיקון שגיאות . 11 MATLAB..............................................................................................................129- שיפור ביצועים ב12

12.1 PROFILER..................................................................................................................................129 131.....................................................................................................................פעולות גרפיות מתקדמות. 13

131................................................................................................................................ יצירת סרטים13.113.2 GUI )GRAPHICAL USER INTERFACE)........................................................................................134

135..................................................................................................................גודל החלון קביעת 13.2.1 136....................................................................................................................... הוספת רכיבים13.2.2 136.................................................................................................................... יישור אובייקטים13.2.3 137..................................................................................................... קביעת תכונות של אובייקטים13.2.4 GUI..........................................................................................................................140 תכנות 13.2.5 143.........................................................................................................................................רשימת מונחים

146....................................................................................................................................................מקורות

Page 6: Matlab אובמ - Technion

Matlab-מבוא ל

6

Matlabהכרת סביבת . 1

סביבת העבודה: 1.1רף

ניתן לקבל את הפקודה הקודמת . Enterי הקלדתן ולחיצה על " עcommהרישום במחיקת . י לחיצה על כפתור למעלה" ע-

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

פולה על כפתור השמאלי של לחיצה כ. צים בספרייה הנוכחית :ל על הקבצים הבאים משיגה" הנ.m - פתיחת הקובץ בחלון Editor/Debugger.

.ma-טעינת המשתנים ל -Workspace. .fig -פתיחת חלון הגרפיקה .

ואפשרות להעברתן באופן Command Window-ת שהוקלדו בCommand Wi .

.ועזרים נוספים, demos, למסמכי עזרה

פרוט החלונות ושימושם: 1.1

שורת הפקודה)command line(

העבודה מרחב

נוכחית ספריה שינוי

אתחול ממשק העזרה חדש m. קובץ פתיחתEditor/Debuggerבחלון

ם בתוך כל הנוכחית

ג

פרוט החלונות ושימושם

הסברהרצת פקודות

and line-בd Window

Command Wind

תצוגת מרחב Workspace פרוט כל הקבהעכבר בחלון קובץ t קובץ קובץ

Current Directo

תיעוד פקודוndow-ידני ל

Command Histo

גישה מהירה Launch Pad

טבלה

חיפוש אחר מילי בספריהm.קבצי

1.1

חלוןow

ry

ry

Page 7: Matlab אובמ - Technion

Matlab-מבוא ל

Matlabסוגי קבצי 1.2

,Matlab-ישנם מספר סוגים של קבצים ב m.קבצים עם סיומת .1

עריכתם והרצתם מבוצעות דרך חלון . Matlabקבצים אלו מבצעים פקודות Editor/Debugger .

,m.קיימים שני סוגי קבצי הם פועלים על מידע הנמצא . ירים פלטקבצים אלו אינם מקבלים קלט או מחז: script .א

הרצת הקובץ . Command Window-שקול להקלדת הפקודות ב. Workspace-ב ). י לחיצה על כפתור החץ כלפי מטה "או ע (5Fי לחיצה על "נעשית ע

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

.8כפי שיוסבר בפרק mat.קבצים עם סיומת .2

. קבצים אלו מאכסנים משתנים וערכיהם fig.קבצים עם סיומת .3

.קבצים אלו מאכסנים גרפים

Matlab של help- שימוש ב1.3

,ניתן לחפש עזרה לגבי נושאים ופונקציות באמצעות ממשק העזרה

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

כלקבצי

העזרה המכילים את מילת החיפוש

תצוגת קובץ העזרה המסומן

7

helpחלון : 1.2גרף

קובץ העזרה המסומן

Page 8: Matlab אובמ - Technion

Matlab-מבוא ל

8

,קימות מספר דרכים כדי לקבל הסברים לגבי פונקציה

שם הפונקציה ידוע שם הפונקציה לא ידוע-ומילת מפתח מציג ב lookforכתיבת

Command Window רשימת כל הפונקציות .שיש להן קשר למילת מפתח

Command- ושם הפונקציה מציג ב helpכתיבתWindow הסבר לגבי פעולת הפונקציה ואופן .השימוש בה

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

ושם הפונקציה פותח את ממשק העזרה docכתיבת מכיל helpלעומת אופציית . ל"בפונקציה הנ

הסברים יותר מפורטים ובנוסף גם גרפים .ונוסחאות

ספרים אלו נמצאים . ים שלו-toolbox- ובMatlab-קיים מספר גדול של ספרי הדרכה לגבי שימוש ב .Launch Pad בחלון pdf בממשק העזרה או בפורמט contentsאופציית דרך htmlבגרסת

ים -toolbox- אפשריים של הם וביישומיMatlab- רחב המסבירים שימוש בdemosבנוסף קיים מאגר .שלו

כללים לקביעת שמות משתנים1.4 ל שם חייב כ. מתעלם מכל תו נוסףMatlabכאשר , תווים לשמות משתנים31- מוקצים עד לMatlab-ב

. אסור שיהיו רווחים בשם. '_'underscoreמספרים ותווי , שם יכול לכלול אותיות. להתחיל באותMatlab הוא case sensitive ולכן השם nameו -Nameהם שמות שונים .

: קיימות שתי אסכולות פופולריות למתן שמות. לעיתים רבות שמות הם שילוב של מספר מיליםunderscoreלמשל . ושימוש באותיות גדולותmax force תיכתב max_force או MaxForce בהתאם .לטעם אישי

Command Window- תצוגה ב1.5

,קיימות אופציות רבות אך נציג רק שלוש מהן. formatניתן לשנות את התצוגה באמצעות פונקצית 1.format compact: ייצוג יותר דחוס הנפטר מרוב הרווחים. 2 .format loose :למעשה מבטל את . בעל מרווחיםגייצוformat compact. 3 .format rat :מספרים כמספרים רציונלייםגייצו .

.format short ספרות הדפיסו 5כדי לחזור לייצוג הסטנדרטי של .ל הם רק בתצוגה ואינם משפיעים על אופן שמירת המשתנים"נזכור כי כל השינויים הנ

Matlab- מספרים ב1.6

כדי לציין פקטור החזקה e מכיר גם ברישום המדעי המשתמש באות Matlabבנוסף לרישום העשרוני 52 הוא 2e5כלומר . העשרונית 26 הוא 6e-2- ו⋅10 10−⋅.

הם מספרים קומפלקסים 2+4i, 1-3jלדוגמא . j או iמספרים קומפלקסים מצוינים באמצעות האות .Matlab-חוקיים ב

- המציגה גם פונקציות שלא שייכות לlookforלעומת פונקצית , ים-toolbox-אפשרות זו מציגה רק פונקציות המופיעות ב 1

toolbox-ים.

Page 9: Matlab אובמ - Technion

Matlab-מבוא ל

9

,Matlab-קיימים מספרים קבועים וחשובים ב

. realmax- מתקבל מחלוקת מספר באפס או בערך הגדול מInfהערך

0 מתקבל מהחלוקה NaNהערך 0

I או nfInf

.

Matlab- יציאה מ1.7

י לחיצה על " או עCommand Window- בquitי כתיבת " מבוצעת עMatlab-יציאה מסודרת מCtrl+Q.

Page 10: Matlab אובמ - Technion

Matlab-מבוא ל

10

הגדרת מטריצות.2

הגדרה ידנית2.1

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

11 12 1n

21 22 2n

m1 m2 mn

a a aa a a

A

a a a

=

L

L

M M O M

L

] היא מטריצה Aכלומר ]m n×.

איברי המטריצה מתוחמים . היא יצירת מטריצה והצבת ערכים בתוכהMatlab-הפעולה הבסיסית ביותר ב . מפריד בין השורות" ;"מפריד בין איברי השורה של המטריצה וסימן " ,"סימן , בתוך סוגריים מרובעות

, באופן הבאAלמשל נגדיר את המטריצה

,בחלון הפעולה יופיע האישור

. את סוג המשתנהMatlab-נשים לב כי אין צורך להגדיר מראש ב . דרך נוספת להפריד בין איברי השורה של מטריצה היא השמת רווח בין כל איבר בשורה

,כלומר הפקודה

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

כעת מופיע . מופיעים השמות והגדלים של כל המשתנים הנוכחיים) Workspace (במרחב העבודה] שהוא מטריצה בגודל Aמשתנה בשם ]2 3×.

?מה קורה כאשר נגדיר משתנה אך ללא שם משתנה אליו יוצב הערך המחושב

אם יוגדר משתנה . שלתוכו מוצב ערך המשתנהans אוטומטית מגדיר משתנה בשם Matlabבמקרה כזה .ימחק והערך הקודםansמשתנה זה גם יקרא , נוסף ללא שם

,לדוגמא

]נוצרה מטריצה ]2 .A הזהה למטריצה ans בשם ×3

Page 11: Matlab אובמ - Technion

Matlab-מבוא ל

11

ן בסוף הפקודה נוסיף במקרים רבים לא נרצה לראות את תוכן המטריצה לאחר פעולת הצבת הערכים ולכ ,כלומר הפקודה". ;"

. אך איננה מציגה את תוכן המטריצהAיוצרת את אותה מטריצה

הכנסת ביטויים למשתנים2.1.1

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

[ ]v 3 49 9 7 8 2⇐

לכן עם רוצים להגדיר וקטור עם . עוסק במספרים ולא בביטוים סימבולייםMatlabחשוב לזכור כי

,ביטויים כללים כמו

.אותחלו בערך מספרי) w, x, y, z(ל אלא אם כל המשתנים " איננו מכיר בביטוי הנMatlabאז

וקטורים מדידת גודל מטריצות ו2.1.2

] שהגדרנו היא מטריצהAכזכור המטריצה ]2 מספר השורות , קרי(כדי לקבל את ממדי המטריצה . ×3 , באופן הבאsizeנשתמש בפונקציה ) ומספר העמודות

m 2n 3

⇐⇐

ניתן ) אין זה משנה אם הוקטור הוא וקטור עמודה או שורה(כדי למדוד אורך וקטור , תלעומת זא

, באופן הבאlengthלהשתמש בפונקציה

L 3⇐

כי size - וlengthעדיין רצוי להשתמש בפונקציות , גם אם ידוע לנו אורך הווקטור או גודל המטריצה

.לעיתים רבות פקודות הנכתבות עבור מקרה ספציפי מורחבות למקרה כללי יותר

Page 12: Matlab אובמ - Technion

Matlab-מבוא ל

12

פונקציות להגדרת מטריצות2.2

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

מטריצות אפסים ואחדים2.2.1

. אפסים ואחדים הן מטריצות נפוצות לאתחול מטריצהמטריצות]יצירת מטריצה ]m n×שכל איבריה הם אפסים ,

]יצירת מטריצה ]m n×שכל איבריה הם אחדים ,

מטריצה אלכסונית2.2.2

]ריצה ריבועיתמטריצה אלכסונית היא מט ]n n× המוגדרת כבעלת אפסים בכל האיברים מחוץ לאלכסון ,הראשי

11

22

nn

a 0 00 a

A0

0 0 a

=

L

O M

M O O

L

פונקציה זו מקבלת כקלט . ללא כתיבת כל האפסיםdiagניתן ליצר מטריצה אלכסונית באמצעות פונקצית

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

,מייצרות את המטריצה

7 0 0 00 1 0 0

B0 0 3 00 0 0 8

⇐ −

Bכלומר להוציא את האיברים האלכסוניים מהמטריצה הריבועית , ניתן לבצע את הפעולה ההפוכה

,באמצעות אותה פונקציה באופן הבא

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

I[nהיחידה n]× משתמשים בפונקציה eyeבאופן הבא ,

Page 13: Matlab אובמ - Technion

Matlab-מבוא ל

13

מטריצות אקראיות2.2.3

randפונקצית .U[0,1]ים המוגרלים מהתפלות אחידה פונקציה זו מייצרת מטריצה בעלת ערכ

,המבנה הכללי שלה הוא

randnפונקצית N) נורמלית(פונקציה זו מייצרת מטריצה בעלת ערכים המוגרלים מהתפלות גאוסית כלומר . (0,1)

.1ווריאנס , ממוצע אפס ,ה הכללי שלה הואהמבנ

Page 14: Matlab אובמ - Technion

Matlab-מבוא ל

14

יצירת וקטורים בעלי ערכים עוקבים2.3

.קיימות שתי דרכים ליצירת וקטורים בעלי ערכים עוקביםsהרישום . 1 : d : f.

עד לערך ) d(בפקטור מוגדר ) או קטנים(וגדלים ) s(יצירת וקטור בעל איברים שמתחילים מערך מסוים ,כלומר כתיבת). f(יום ס

x s : d : f= ,כאשר

s-ערך התחלתי d-פקטור גידול או הקטנה f-ערך סופי

,יוצר את הוקטור [ ]x s s d s 2d s (n 1)d= + + + −L

,מספר הנקודות יהיה, מעשית. לא מוגדר) n(נשים לב כי מספר הנקודות

f sn 1d−

= +

,מאדוג

[ ]x 3 5 7 9⇐

9ומספר הנקודות הוא 3n 1 42−

= + =.

,דוגמא

[ ]x 10 7 4 1⇐

1ומספר הנקודות הוא 10n 1 43

−= + =

−.

הערות . d=1 זהה לקביעה dרישום ללא ציון הפקטור -

,דוגמא

[ ]x 3 4 5 6 7⇐ fמה קורה כאשר - s (n 1)d≠ + −?

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

f sn 1d− = +

%

,ואז הערך הסופי שיתקבל יהיה f s (n 1)d= + −% %

,ור הוקטרכלומר למעשה ייווצ [ ]x s s d s 2d s (n 1)d= + + + −%L

,לדוגמא

Page 15: Matlab אובמ - Technion

Matlab-מבוא ל

15

f s 8.999 1n 1 1 4.9995 4

d 2f s (n 1)d 1 (4 1) 2 7

− − = + = + = = = + − = + − ⋅ =

%

% %

,כלומר נוצר הוקטור [ ]x 1 3 5 7⇐

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

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

, כלומר( )x linspace s, f , n=

f בעל פקטור nיצור וקטור באורך sdn 1

−=

− , הבא2צר הוקטור בעל המרווחים השוויםכלומר נו.

( )x s s d s 2d s n 1 d= + + + − K ,דוגמא

10 במרווח דגימה 100- ל0 בעל ערכים בין 100יוצר וקטור באורך 99

.

. חשוב אינוn ידוע או חשוב ואילו מספר האיברים dמומלץ להשתמש ברישום הראשון כאשר הפקטור dואילו הפקטור , ידוע או חשובnמומלץ להשתמש ברישום השני כאשר מספר האיברים , לעומת זאת .אינו חשוב

Array Editor חלון 2.4

דרך נוחה להתבונן באיברי מטריצות היא ללחוץ פעמיים על הכפתור השמאלי של העכבר על המטריצה לדוגמא לחיצה כפולה על . Array Editor והמטריצה תופיע בחלון Workspace-הרצויה בחלון ה

.2.1פותח את החלון בגרףA,B,I,L מטריצות

בנוסף ניתן לשנות . י לחיצה על הלשונית המתאימה" עArray Editor-ניתן לעבור בין משתנה למשתנה ב .רכי איברי המטריצה באופן ידניאת ע

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

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

x logspace(s, f , n)= והוקטור שייוצר הוא s s d s 2d fx 10 10 10 10+ + = L.

Page 16: Matlab אובמ - Technion

Matlab-מבוא ל

16

Array Editorחלון :2.1גרף

Page 17: Matlab אובמ - Technion

Matlab-מבוא ל

17

מניפולציה של מטריצות. 3

אינדקסים למטריצות3.1

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

,האינדקסים במטריצה הם

אינדקסים במטריצה: 3.1גרף

,לדוגמא

1 1 1 2

A 1 8 6 01 2 5 8

− ⇐ −

A(1,:)משמעות . היא כל השורות והעמודה השניהA(:,2)כלומר . א כל האיבריםהי":" המשמעות של או לביטוי A(1,1:4) שקול לביטוי A(1,:) כלומר הביטוי .היא השורה הראשונה וכל העמודות

A(1,1:end)4.

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

, החלפת איבר יחיד במטריצה

.מספיק אינדקס יחיד, שת לאיברי וקטורים אין צורך לציין את גם את השורה וגם את העמודהכדי לג 3בהתאם למיקום בסוגריים ( בסוף וקטור האינדקס אוטומטית מחזירה את מספר השורה או העמודה המכסימליים endכתיבת 4

).העגולות

1 1 1 2A 1 8 6 0

1 2 5 8

− = −

A(3,1) A(:,2)

A(1:2,2:4)

Page 18: Matlab אובמ - Technion

Matlab-מבוא ל

18

,דוגמא ,מטריצה במטריצה-החלפת תת

,דוגמא

,י פעולת הצבת סקלר"הצבת ערך זהה בתת מטריצה ע

[]. סוגרים מרובעות ריקות -י הצבת סימון מטריצה ריקה "ניתן גם להיפטר משורות או עמודות ע

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

17 24 1 8 1523 5 7 14 16

A 4 6 13 20 2210 12 19 21 311 18 25 2 9

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

17 24 1 8 1523 5 7 14 16

A10 12 19 21 311 18 25 2 9

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

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

,לדוגמא

17 24 1 8 15 023 5 7 14 16 0

A 10 12 19 21 3 011 18 25 2 9 00 0 0 0 0 2

Page 19: Matlab אובמ - Technion

Matlab-מבוא ל

19

sort- וfind פונקציות 3.1.1

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

,אשל הפונקציה הו

,ועבור וקטורים הרישום הוא

,דוגמא למטריצות ,Aנגדיר מטריצה

0 0 0 3 0

A 0 0 0 0 02 0 0 0 0

⇐ −

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

,דוגמא לוקטורים

.רה מטריצה ריקהאם לא נמצאים הערכים המבוקשים אז הפונקציה מחזי 5

Page 20: Matlab אובמ - Technion

Matlab-מבוא ל

20

[ ]a 0 0 0 0 8 0 0 3 0

index [5,8]⇐ −

,aשימוש אפשרי של אינדקס זה הוא לקבל וקטור המכיל את כל האיברים השונים מאפס בוקטור

a _ no _ zero [8, 3]⇐ − ,יאו ברישום יותר קומפקט

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

index [10 11 12 13]⇐

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

,לדוגמא

[ ]

[ ]m _ sorted 5 3 0 1 5 7 93

index 4 3 6 5 1 7 2

⇐ − −

ם אופרטורים מטריציי3.2

',מבוצעת באמצעות הסימן ) ות ועמודות מטריצהחילוף בין שור (6transposeפעולת

2 3

C 1 85 4

"*" ,"-","+"חיסור וכפל מטריצות באמצעות האופרטורים , ניתן לבצע פעולות בסיסיות של חיבור .בהתאם לחוקי האלגברה הלינארית

,חיבור מטריצות

10 6 6

C3 17 6

,כפל מטריצות

transposeאך כדי לבצע , עבור מטריצות ממשיות אין זה משפיע. וגם צמוד קומפלקסיtransposeמבצע ' אופרטור הגרש 6

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

Page 21: Matlab אובמ - Technion

Matlab-מבוא ל

21

16 37 8

C 8 77 1740 61 13

,כפל סקלר במטריצה

16 10 2

C0 18 4

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

במקרה . סכימה בין מטריצה לסקלר- קיים מקרה יוצא מהכלל יחידMatlab-אבל ב. וגדרתכזו איננה מ .ל שקולה לסכימה על כל איברי המטריצה"כזה הפעולה הנ

,לדוגמא

7 4 0

C1 8 1

⇐ −

דטרמיננטה3.2.1

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

ans 5⇐ −

היפוך מטריצה3.2.2

A[n 7ניתן להפוך מטריצה ריבועית n]×בשתי דרכים שונות , .1-^ או אופרטור invפונקצית .1

,לדוגמא

או

,מפעילים את אותו אלגוריתם הפיכת מטריצה שתוצאתו

0.6 0.4

A0.8 0.2

− ⇐ −

.ובאמצעות מטריצת יחידה/ אופרטור .2 ,לדוגמא

det(A)-בתנאי ש 7 0≠.

Page 22: Matlab אובמ - Technion

Matlab-מבוא ל

22

אופרטור הנקודה3.3

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

,למען המחשה נגדיר שתי מטריצות כלליות

11 12 13 14

21 22 23 24

31 32 33 34

11 12 13 14

21 22 23 24

31 32 33 34

a a a aA a a a a

a a a a

b b b bB b b b b

b b b b

= =

,כפל11 11 12 12 13 13 14 14

21 21 22 22 23 23 24 24

31 31 32 32 33 33 34 34

a b a b a b a bC A.*B a b a b a b a b

a b a b a b a b

⋅ ⋅ ⋅ ⋅ = = ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅

,חילוק11 11 12 12 13 13 14 14

21 21 22 22 23 23 24 24

31 31 32 32 33 33 34 34

a b a b a b a bC A./ B a b a b a b a b

a b a b a b a b

= =

,חזקה1311 12 14

2321 22 24

31 32 33 34

bb b b11 12 13 14

bb b b21 22 23 24

b b b b31 32 33 34

a a a aC A.^ B a a a a

a a a a

= =

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

,עבור המקרים הבאים אופרטור הנקודה מיותר

.חיבור או חיסור. 1 ).וק בסקלרניתן לביצוע באמצעות כפל או חיל(כפל או חילוק כל איברי המטריצה באותו קבוע . 2

שימושים לאופרטור הנקודה3.3.1

אז אופרטור ) הוא הקבועb הוא הקבוע או aבין אם (עם מספר קבוע ) ba(כדי לבצע את פעולת החזקה . הנקודה הכרחי

,דוגמא

Page 23: Matlab אובמ - Technion

Matlab-מבוא ל

23

[ ]y 2 4 8 16 32 64 128⇐ ,דוגמא

[ ]y 1 4 9 16 25 36 49⇐

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

,דוגמא

חישוב הביטוי 5

x

x 1s x

=

= ,8י כתיבת" מבוצע ע∑

s 3413⇐

,דוגמא

ונדרש לחשב את הביטוי A,B,C) לא בהכרח ריבועי(ותו גודל מטריצות בעלות א3נתונות 3sin(A)f 1

B ^ C = +

.

,המימוש

לעיתים רבות ביטוי זקוק לזוגות רבים . הסוגרייםת היא בעייMatlab-אחת הבעיות הכי נפוצות במקרה חמור יותר הוא . דעת שגיאהומבלבלים של סוגריים ולכן ניתן בקלות לפספס סוגר ותתקבל הו

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

אם אין . י הזזת הסמן מתחת לסוגר" ניתן להתגבר על בעיית הסוגריים עEditor\Debuggerבחלון

אם קיים לו סוגר משלים אז מצוייר קו תחתי . קי דרכולסוגר סוגר משלים אז זמנית משורטט קו אופ .מתחת לסוגר המסומן והסוגר המשלים שלו

.3.4לפרטים פנו לפרק . מבצעת סכימה על איברי וקטורsumפונקצית 8

Page 24: Matlab אובמ - Technion

Matlab-מבוא ל

24

פונקציות סכימה וכפל3.4

,קיימות שתי פונקציות סכימה sumפונקצית . 1

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

n

ii 1

s sum(x) x=

= = ∑

, לדוגמא

s 10⇐

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

]באופן כללי עבור מטריצה ]m n× X פונקצית sumאת הערכים הבאים מחזירה ,

11 12 13 1n

21 22 23 2n

m1 m2 m3 mn

x x x xx x x x

X

x x x x

=

L

L

M M M M

L

m m m

i1 i2 ini 1 i 1 i 1

s sum(X) x x x= = =

= =

∑ ∑ ∑L

,9לדוגמא

[ ]s 15 18 21 24⇐ , נרשוםXכדי לסכום על פני השורות של המטריצה

,מתקבל

[ ]s 10 26 42⇐ cumsumת פונקצי. 2

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

]באופן כללי עבור וקטור ]n 1× x פונקצית cumsumמחזירה את הערכים הבאים ,

1 2 n

i i ii 1 i 1 i 1

s cumsum(x) x x x= = =

= =

∑ ∑ ∑L

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

Page 25: Matlab אובמ - Technion

Matlab-מבוא ל

25

,לדוגמא

[ ]s 1 3 6 10⇐

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

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

11 12 13 1n

21 22 23 2n

m1 m2 m3 mn

x x x xx x x x

X

x x x x

=

L

L

M M M M

L

, מחזירה את מטריצת הסכומים המצטבריםcumsumפונקצית

1 1 1

i1 i2 ini 1 i 1 i 12 2 2

i1 i2 ini 1 i 1 i 1

m m m

i1 i2 ini 1 i 1 i 1

x x x

x x xS cumsum(X)

x x x

= = =

= = =

= = =

= =

∑ ∑ ∑

∑ ∑ ∑

∑ ∑ ∑

L

L

M M M

L

של סכומים באמצעות מכפלת וקטורים ומטריצותם ייצוגי3.4.1

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

,נתוןa, b – וקטורים [ ]n 1×

[ ]1

n2

i i 1 2 ni 1

n

bb

a, b a b a a a a b

b=

′= ⋅ = ⋅ = ∗

∑ L

תבנית ריבועית .2 ,נתון

x –וקטור [ ]n 1×

C –מטריצה [ ]n n× n n

i ij ji 1 j 1

f x c x x C x= =

′= = ∗ ∗∑∑

Page 26: Matlab אובמ - Technion

Matlab-מבוא ל

26

prod פונקצית כפל 3.4.2

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

n

ii 1

p prod(x) x=

= = ∏

,לדוגמא

p 24⇐

.sum על מטריצות זהה לאופן פעולת פונקצית prodאופן פעולת פונקצית

שכפול מטריצות3.5

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

repmat פונקצית 3.5.1

, הואrepmatהמבנה הכללי של פונקצית repmat(X, r,c)

X הוא מספר הפעמים שהמטריצה r. וקטור או סקלר המיועד לשכפול, היא מטריצהXכאשר . תשוכפל בכיוון העמודותX הוא מספר הפעמים שהמטריצה c-ל בכיוון השורות ותשוכפ

,דוגמא לשכפול סקלר

2 2 2 2

Z 2 2 2 22 2 2 2

,ניתן לבצע פעולה זאת גם באופן הבא

,דוגמא לשכפול ווקטור

5 9 1 7 2 5 9 1 7 2

Z 5 9 1 7 2 5 1 9 7 25 9 1 7 2 5 1 9 7 2

,דוגמא לשכפול מטריצה

Page 27: Matlab אובמ - Technion

Matlab-מבוא ל

27

5 0 5 0 5 00 5 0 5 0 5

Z5 0 5 0 5 00 5 0 5 0 5

meshgrid פונקצית 3.5.2

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

,הפקודות[ ][ ]

1 2 3 4

1 2 3

x x x x x ;

y y y y ;[X,Y] meshgrid(x, y);

=

=

=

,יוצרת את המטריצות1 2 3 4

1 2 3 4

1 2 3 4

1 1 1 1

2 2 2 2

3 3 3 3

x x x xX x x x x

x x x x

y y y yY y y y y

y y y y

⇐ ⇐

קיימים שינויים Yואילו במטריצה ' xציר ' קיימים שינויים רק בכיוון Xנשים לב כי במטריצה

.'yציר 'רק בכיוון ,לדוגמא

1 2 3 4X 1 2 3 4

1 2 3 4

1 1 1 1Y 2 2 2 2

3 3 3 3

⇐ ⇐

. זהים נרשום רק וקטור אחד בקלט של הפונקציהy וציר xאם ברצוננו ליצור ציר

,לדוגמא

Page 28: Matlab אובמ - Technion

Matlab-מבוא ל

28

2 4 6 82 4 6 8

X22 4 6 82 4 6 8

2 2 2 24 4 4 4

Y26 6 6 68 8 8 8

⇐ ⇐

. הדן בשרטוט משטחים תלת ממדיים6.2 השימוש בפונקציה זו יוסבר ביתר פירוט בפרק

Page 29: Matlab אובמ - Technion

Matlab-מבוא ל

29

kron פונקצית 3.5.2 .ונקציה זו מבצעת כפל טנזורי בין שתי מטריצותפ

m1]משמעות כפל טנזורי בין שתי מטריצות n1] [m2 n2]X ,Y× בכל X היא מכפלת כל איבר במטריצה ×

) וסידור כל המכפלות האלו במטריצה חדשה בגודל Yהמטריצה ) ( )m1 m2 n1 n2⋅ × ⋅ . ,לדוגמא

1 2X

3 4

1 1 1Y 1 1 1

1 1 1

1 1 1 1 1 1 1 1 1 2 2 21 1 1 1 2 1 1 1 1 1 1 2 2 2

1 1 1 1 1 1 1 1 1 2 2 2K kron(X,Y)

3 3 3 4 4 41 1 1 1 1 13 3 3 4 4 43 1 1 1 4 1 1 13 3 3 4 4 41 1 1 1 1 1

=

=

⋅ ⋅ = = =

⋅ ⋅

2]בדוגמא זו 2] [3 3]X ,Y× ) היא בעלת הממדים K ומטריצה × ) ( )2 3 2 3⋅ × ⋅ .

. כוקטור או מטריצת אחדיםXי קביעת "ניתן ממש לשכפל מטריצות ע

Page 30: Matlab אובמ - Technion

Matlab-מבוא ל

30

היפוך סדר מטריצה3.6

,קיימות שתי פונקציות להיפוך מטריצות )fliplr) flip left-rightפונקצית .1

,פונקציה זו הופכת את סדר העמודות

4 3 2 1

X _ lr 4 3 2 14 3 2 1

)flipud) flip up-downפונקצית .2 ,פונקציה זו הופכת את סדר השורות

3 3 3 3

Y _ ud 2 2 2 21 1 1 1

=

פתירת מערכת משוואות לינארית3.7

, נעלמיםn- משוואות וmנתונה מערכה של

11 1 12 2 1n n 1

21 1 22 2 2n n 2

m1 1 m2 2 mn n m

a x a x a x ba x a x a x b

a x a x a x b

+ + + = + + + = + + + =

K

K

M

K

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

A x b⋅ =

)במקרה שבו מספר המשוואות ומספר הנעלמים זהה )m n= אז המטריצה A היא מטריצה ריבועית , באופן הבאinvל באמצעות פונקצית " את מערכת המשוואות הנ10ורניתן לפת

)עבור המקרה הלא ריבועי )m n≠ יש צורך לחשב את pseudo-inverse,

,באופן הבא \ל היא באמצעות האופרטור "דרך עדיפה לפתור את מערכת המשוואות הנ

. הפיכהAעבור מטריצה 10

Page 31: Matlab אובמ - Technion

Matlab-מבוא ל

31

שמירת וטעינת משתנים3.8

, באופן הבאsave נשתמש בפונקציה Workspace-שמירת כל המשתנים ב

. Workspace- המכיל את כל המשתנים בname.matפונקציה זו יוצרת קובץ

די לשמור רק משתנים ספציפיים נרשום כמקודם ונוסיף את שמות המשתנים לשמירה לאחר שם קובץ כ . mat-ה

, נבצעname בשם mat. לקובץ x yy Zלמשל כדי לשמור את המשתנים

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

, נבצעx Zלמשל כדי למחוק את המשתנים

, באופן הבאload למרחב העבודה משתמשים בפונקציה matאם ברצוננו לטעון משתנים מקובץ

).Current Directory( הרצוי בחלון הספרייה הנוכחית mat.ל קובץ או פשוט לחיצה כפולה ע

Command Window- קבלת והצגת מידע ל3.9

מחרוזות3.9.1

.כלי מרכזי בהצגת מידע באופן ברור הוא השימוש במחרוזות להצגת טקסטמחרוזת מוגדרת כטקסט .א למעשה וקטור שכל איבר בו הוא תו יחיד היMatlab-ב) String(מחרוזת

.בעל גרשיים משני צדדיו ,לדוגמא

,נשים לב כי). מערך תווים (char array מסוג 4יוצר וקטור באורך

s(2) afliplr(s) eman

←←

.ל מחרוזותלכן ניתן למשל ליצור מטריצה ש. Matlab-מחרוזת היא מערך בדומה לכל מערך ב

,לדוגמא

s2(1,:) names2(2,:) eman

←←

Page 32: Matlab אובמ - Technion

Matlab-מבוא ל

32

אך אם נרצה . ל שתי המחרוזות היו בעלות אותו אורך ולכן לא היתה בעיה ליצור מהן מטריצה"במקרה הנ

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

,לדוגמא כתיבת

]יוצר מטריצה ]3 ,Command Window- של מערך תווים ומתקבל ב×5

.פונקציה זו מייצרת רווחים בסוף המחרוזות הקצרות יותר

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

Command Window- הצגת מידע ב3.9.2

,Command Window-ישנן מספר דרכים להצגת ערכים של משתנים ב .אך הכי פחות יפה ומסודרת, זוהי הדרך הכי פשוטה". ;"להשמיט את .1 . dispפונקצית .2 .fprintfפונקצית .3

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

,לדוגמא כתיבת הפקודה

, את הטקסטCommand Windowמציגה בחלון

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

. להמיר את הערכים המספרים למחרוזותnum2strמשתמשים בפונקצית ,דוגמא . Command Window-מ ואנו רוצים להציג זאת ב" ס9 הוא טקבל כי אורך אובייקהת

, מוצגCommand Window-ב

Page 33: Matlab אובמ - Technion

Matlab-מבוא ל

33

.י הוספת ארגומנט נוסף" המומרות למחרוזת ע11ניתן גם לשלוט במספר הספרות ,לדוגמא

לכן . 5ארגומנט זה קבע כי מספר הספרות שיומרו למחרוזת הוא . 5הוספנו ארגומנט נוסף בעל ערך ,Command Window-הפלט הבא מופיע ב

פונקציה זו יחסית יותר מורכבת אך מאפשרת שליטה גבוהה . fprintf היא disp-פונקציה אלטרנטיבית ל .Matlabטים חפשו בעזרה של לפר. יותר בתצוגה

Command Window- קבלת מידע מה3.9.3

input באמצעות פונקצית Command Windowניתן לקבל ערך מספרי של משתנה מהמשתמש בחלון ,באופן הבא

את המחרוזת הנמצאת בסוגריים ומחכה שהמשתמש יקליד Command Window-פונקציה זו מציגה ב . xמוכנס הערך שהמשתמש בחר למשתנה בשם , ברגע שזה קורה. Enterערך וילחץ על

,ניתן להכניס גם מחרוזת לתוך משתנה באופן הבא

הערות . כדי לרדת שורה בטקסטn\ניתן להוסיף -פונקציה זו . pauseיה נוספת המקבלת הוראות ישירות מהמשתמש היא פונקצית פונקצ -

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

.כולל ספרות לפני הנקודה העשרונית 11

Page 34: Matlab אובמ - Technion

Matlab-מבוא ל

34

מבני מידע. 4

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

Matlabסוגי מבני מידע של : 4.1גרף

ממדיים -למשל מערכים נומריים דו: הם מערכיםMatlab- כל מבני המידע ב4.1כפי שניתן לראות מגרף בפרק זה נלמד להכיר מספר סוגים ). character array(נקראים מטריצות ומחרוזות הן מערך של תווים

.של מבני מידע נוספים

ממדיים-מערכים נומריים רב 4.1

ניתן לחשוב על מערך תלת ממדי כאוסף של . לעיתים רבות רצוי ליצור מערכים בעלי יותר משני ממדים מורכבת משלוש מטריצות RGBתמונת , לדוגמא. 4.2מטריצות אחת אחרי השניה כפי שמצוייר בגרף

ניתן לחשוב על מערכים . תמונה צבעוניתוכחול ב, ירוק, המציינות את עוצמת האדום) באותו גודל כמובן(לדוגמא מדידות תלת ממדיות של טמפרטורה בחדר מהוות מערך , ממדיים גם בתור מידע רב ממדי-רב

.תלת ממדי ,zeros, ones, randניתן ליצור מערכים רב ממדיים באמצעות פונקציות יצירת מטריצה בסיסיות כמו

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

3 בעל 5 על 4 על 3יוצרת מערך 4 5 60⋅ ⋅ A(i,j,k)ניתן לחשוב על האיבר . איברים שערכם אפס= .k במטריצה (i,j)כעל איבר

, הואAהגודל של

.cat ובפונקצית repmatניתן גם להשתמש בפונקצית 12

Page 35: Matlab אובמ - Technion

Matlab-מבוא ל

35

,תהמחשה גרפי

של אפסים5 על 4 על 3מערך : 4.2גרף

ישנן פונקציות שבאופן בסיסי . רבות על מערכים נומריים רב ממדייםMatlabניתן לבצע פונקציות למשל פונקצית (כלומר איבר איבר , או פועלות על סקלרים) sumלמשל פונקצית (פועלות על וקטורים

sin .( . ונקציות הפועלות על וקטורים צריכות שיציינו להן באיזה ממד לבצע את פעולתןפ

, באופן הבאd וממד סכימה Aממדי - יכולה לקבל מערך רבsumלמשל פונקצית

] יניב מטריצה sum(A,3), למשל ]3 .4.2ה הסכימה על המטריצות בגרף שהוא למעש×4

.ממדיים-ממדיים ודו-פונקציות הפועלות איבר איבר פועלות באותו אופן שפעלו על מערכים חד ,למשל

.Aמייצרת מערך בגודל זהה למערך

שינוי ממדי מערך4.1.1

או לשנות את הממדים עצמם permuteניתן לשנות את סדר הממדים של מערך באמצעות פונקצית .reshapeבאמתעות פונקצית

שינוי סדר הממדים

-פונקציה זו היא למעשה הרחבה של פעולת ה. מאפשרת החלפת סדר הממדיםpermuteפונקצית

transposeממדיים- למערכים רב .

7]בגודל B תון מערך רב ממדילמשל נניח כי נ 13 14 8]× × כדי להפוך את סדר הממדים של המערך . ×7]-ל 8 13 14]× × ×Cנרשום ,

Page 36: Matlab אובמ - Technion

Matlab-מבוא ל

36

שינוי הממדים

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

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

1 4 7 10A 2 5 8 11

3 6 9 12

1 3 5 7 9 11A

2 4 6 8 10 12

=

=

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

5 על 4 על 3מערך : 4.3גרף

טריק

A(:) הופך כל מערך נומרי רב ממדי לוקטור עמודה אחד ארוך באותו סדר דגימה וסידור מחדש של ו הוא נוצר לכן גם ניתן לשחזר מוקטור הנוצר בשיטה זו את המערך הרב ממדי שממנ. reshapeפונקצית

.reshapeבאמצעות פונקצית

,לדוגמא

.4.3 המתואר בגרף Aמניב את אותו מערך רב ממדי

Page 37: Matlab אובמ - Technion

Matlab-מבוא ל

37

)cell arrays( מערכי תאים 4.2

. מאפשר אכסון משתנים מטיפוסים וגדלים שוניםcellמערך י רישום הדומה למטריצה "מערך תאים נוצר ע. יל מערך הוא מערך שכל איבר בו הוא תא המכcellמערך

. במקום במרובעות13למעט שימוש בסוגריים מסולסלות ,לדוגמא

2] בגודל cell arrayיוצר , הבא×[2

,שתי דרכים נוספות להציג מערך תאים הן . המציגה פירוט כל תאcelldispפונקצית . 1

,לדוגמא

,Command Window-מייצר ב

.{}מערך תאים ריק מסומן 13

Page 38: Matlab אובמ - Technion

Matlab-מבוא ל

38

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

,מייצרת את הגרף

string 7

Cייצוג של מערך תאים : 4.4גרף

מערכים אחרים ולכן שינוי המערכים האחרים לא ישנה חשוב לזכור כי מערך תאים מכיל רק עותקים של

.את מערך התאים .C אינו משנה את מערך התאים Aל שינוי המטריצה "למשל בדוגמא הנ

תכונה זו . כיל אובייקטים מסוגים שונים באותו מערךהיתרון המרכזי במערכי תאים היא יכולתם לה

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

הגישה לכל איבר במערך התאים דומה לגישה לאיברים במטריצה רק שכעת משתמשים בסוגריים

.מסולסלות ,לדוגמא

Page 39: Matlab אובמ - Technion

Matlab-מבוא ל

39

,נשרשר את האינדקסים ונרשום) 1,1(בתא ) 2,3(כדי לגשת לאיבר

,מחיקת תאים מבוצעת באופן הבא

,לדוגמא

, הואCכעת המערך . מוחק את עמודת התאים השניה

.14cellאתחול מערך תאים במטריצות ריקות מבוצע באמצעות פונקצית ,לדוגמא הפקודה

3] יוצרת מערך , של תאים המכילים מטריצות ריקות×[4

.י הוספת עוד ארגומנטים"ממדיים ע-באמצעות פונקציה זו ניתן ליצור מערכי תאים רב ,לדוגמא

3]יוצר מערך תאים 4 5]× ×.

.catדרך נוספת היא באמצעות פונקצית 14

Page 40: Matlab אובמ - Technion

Matlab-מבוא ל

40

Structure מערכי 4.3

בכך שגם הם מאפשרים אכסון של משתנים מטיפוסים וגדלים cell דומים למערכי structureמערכי שדות של שמות ולא מאוכסנים בתוךstructure-המערכים ב, cellאך בניגוד למערכי . וניםשונים ומש

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

structureדוגמא למערך : 4.5גרף

,שני אופנים,

sבגודל [ ]1 , הבאpatient בשם ×1

,ך להרחיב את המערך באופן הבא

]חב לגודל ]1 2×,

120 39 7898 154 12.test

.billing 135.00

.name ‘John Doe’

patient

נעשית בstructureבניית מערכי

לדוגמא. באמצעות הצבה .1

tructureמניב את מערך

כדי ליצור עוד לקוח צרי

הורpatientעת מערך כ

Page 41: Matlab אובמ - Technion

Matlab-מבוא ל

,הרישום הכללי. structבאמצעות פונקצית .2

] בגודל patientלדוגמא כדי ליצור את אותו מערך ]1 , נרשום×2

structure גישה למערכי 4.3.1

, הבאstructure-נניח כי נתון מערך ה

[1.

K

120 39 7898 54 12.test

.billing 135.00

.name ‘John Doe’

52 43 121

.billing 135.00

.name ‘Elvis’

163 67 71

.billing 112.00

.name ‘Jane Doe’

patient array

patient(1) patient(2) patient(3)

41

×[3 בגודל structureדוגמא למערך : 4.6גרף

). המכיל ערכים לכל השדות (structureניתן לגשת לכל איבר במערך ,לדוגמא

,כדי לגשת לשדה ספציפי הוסיפו נקודה ושם השדה

,לדוגמא

156 12 79.test13 18 191.test

Page 42: Matlab אובמ - Technion

Matlab-מבוא ל

42

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

,לדוגמא

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

,אופן השימוש הכללי בה הוא. rmfield נשתמש בפונקציה structure-כדי למחוק שדה מ

חוץ struct_array1- המכיל את כל השדות שישנם בstruct_array2 חדש בשם structureר מערך מוגד .fieldמשדה

,לדוגמא

, נבצע את הפקודה הבאהpatient ממערך billingאם ברצוננו להוריד את שדה

Page 43: Matlab אובמ - Technion

Matlab-מבוא ל

43

יתממד-גרפיקה דו. 5

-ממדיים ותלת-הצורה הנוחה והמהירה שבה ניתן לייצר גרפים דו היאMatlabאחד היתרונות של . ממדיים

,פונקציות הגרפיקה מתחלקות לשלושה סוגים

שליטה בגרפים יצירת גרפים סימונים ואפיוניםlegend (2D only) text title box grid axis set, get clabel xlabel ylabel 3-D zlabel colorbar colormap

2-D plot fill plotyy 3-D plot3 surf, surfc mesh, meshz contour, contour3, contourf waterfall cylinder

figure subplot zoom hold alpha shading 3-D view rotate3d

פונקציות גרפיקה: 5.1טבלה

הרצת פונקציה . ומטי חלון גרפיקה שבו משורטט הגרףכל פונקציה ליצירת גרפים יוצרת באופן אוט

מסיבה זו ומפני שבמקרים רבים רצוי . ליצירת גרפים כאשר כבר קיים גרף גורמת למחיקת הגרף הקודם figure(n)הרישום . כדי לייצר חלון גרפיקהfigureלייצר מספר גרפים נפרדים משתמשים בפונקציה

. ללא מספור יוצר חלון בעל המספר השלם הבאfigureהרישום . n בעל מספור מייצר חלון גרפיקה

הערות והגרף ישמר File בתפריט …Save as או Saveי בחירת פונקצית "שמירת גרף מבוצעת ע -

.figכקובץ Copy באמצעות פונקצית Word למעבד תמלילים כמו Matlabניתן להעביר גרפים של -

Figure הנמצאת בתפריט Edit .רקע אפור הוא ברירת המחדל לגרפים ב-Matlab . שינוי רקעלמשל כדי להכריח רקע לבן בוחרים . Edit ,Copy Optionsי בחירה בתפריט "מבוצע ע .Force white backgroundבאופציה

Page 44: Matlab אובמ - Technion

Matlab-מבוא ל

44

plot פונקצית 5.1

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

1 1 2 2plot(x , y , x , y , )K

}כאשר }i ix , y , i 1, 2,= Kצמדי וקטורים בעלי אותו אורך או צמדי , יכולים להיות צמדי סקלריםהוספת מחרוזת קצרה לאחר כל צמד מאפשרת שליטה בצבע ובצורת הנקודות או . 15מטריצות מאותו גודל

,באופן כללי הרישום הוא. הקווים1 1 1 2 2 2plot(x , y ,c , x , y ,c , )K

ic16קו/המציינים את צבע וסוג הנקודה) עד לארבעה תווים(ם מורכב ממספר תווי .

... ). ,אדום, ירוק, ברירת מחדל היא כחול(קו יהיו בצבע ירוק /קובעת כי הנקודה' g'למשל המחרוזת קובעת כי ' k--'למשל המחרוזת . קובעת כי נקודה בגרף תהיה כוכבית אדומה' *r'למשל המחרוזת

. ישורטט קו מקוטע שחורקובעת כי ישורטט קו ' g--s'למשל המחרוזת .י ציון שניהם במחרוזת"תן גם לשלב נקודות עם קווים עני

.ירוק מקוטע עם ריבועים

. מסכמת את כל האפשריות5.2טבלה

סוג קו סוג נקודה צבע

מון קווים ונקודות בגרפיםסיכום אפשריות סי: 5.2טבלה

שרטוט גרף של נקודות5.1.1

,קיימות שתי דרכים לשרטט גרפים של נקודות ללא חיבור קווים ביניהם }הצמדים . 1 }i ix , y , i 1, 2,= Kהם סקלרים

,לדוגמא הקוד

.קיימת גם קומבינציה של וקטור ומטריצה אך זהו מקרה מיוחד שידון בהמשך הפרק 15 . איננו משנהcסדר התווים במחרוזת 16

Page 45: Matlab אובמ - Technion

Matlab-מבוא ל

45

.5.1מניב את גרף

0 1 2 3 4 5 6 7 81

2

3

4

5

6

7

גרף נקודות: 5.1גרף

התמקד על הנתונים כך שחלק מהנקודות הן בדיוק על הגבול ולכן Matlabות כי ניתן לרא5.1בגרף

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

,רישומה הכללי הואmin max min maxaxis([x , x , y , y ])

,כאשרminx- ערך מינימלי של ציר xהיופיע בגרף

maxx- ערך מכסימלי של ציר xהיופיע בגרף

miny- ערך מינימלי של ציר yהיופיע בגרף

maxy- ערך מכסימלי של ציר yהיופיע בגרף

, נוסיף את הקוד5.1ף את התצוגה בגר" רווח"כדי ל

. מתקבל5.2וגרף

,17אם ברצוננו לשנות רק חלק מגבולות הצירים ניתן לבצע זאת באופן הבא ,תחילה להציב בוקטור כלשהו את גבולות הצירים

min max min maxtmp [x , x , y , y ]←

, את הוקטור המעודכןaxis-לשנות בוקטור את הקואורדינטות הרצויות ולהחזיר ל

minי הוספת עוד שני משתנים "ממדי ע- לגרף תלתל גם"הנ" טריק"ניתן לבצע את ה 17 maxz , z כדי לתחום את ציר z.

Page 46: Matlab אובמ - Technion

Matlab-מבוא ל

46

-1 0 1 2 3 4 5 6 7 8 90

1

2

3

4

5

6

7

8

axisגרף נקודות שתצוגת מערכת הצירים שלו שונתה באמצעות פונקצית : 5.2גרף

}הצמדים . 2 }i ix , y , i 1, 2,= K 18ציון סוג הנקודה אך אי ציון סוג הקו+ הם וקטורים

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

.5.3מניב את גרף

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

י ציון סוג הנקודות"שרטוט גרף נקודות ע: 5.3גרף

.ציון הצבע איננו משפיע על קביעה אם הגרף יהיה גרף נקודות או קווים 18

Page 47: Matlab אובמ - Technion

Matlab-מבוא ל

47

היתרון של הרישום הוקטורי לעומת הרישום הסקלרי הוא שאין צורך לרשום כל איבר בוקטור בנפרד החסרון של הרישום הוקטורי הוא חוסר שליטה על הצורה . )הופך לבלתי אפשרי עבור וקטורים ארוכים(

.והצבע של כל נקודה בנפרד

יצירת גרף של קווים5.1.2

}לכן כאשר הצמדים . ברירת המחדל ליצירת גרפים היא גרפים של קווים }i ix , y , i 1, 2,= K הם יחבר קווים ישרים Matlabאז ) 5.1.1האפשרות השניה בפרק (וקטורים ולא מצוין במפורש סוג הנקודה

.בין הנקודות ,לדוגמא הקוד

.5.4מניב את גרף

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

גרף של קווים: 5.4גרף

,הקוד. דוגמא נוספת

.5.5מניב את גרף

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

x a r cos( )y b r sin( )

= + θ= + θ

Page 48: Matlab אובמ - Technion

Matlab-מבוא ל

48

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

שרטוט פונקציה בקו מקוקו: 5.5גרף

0כאשר 2≤ θ ≤ π . מרכז המעגל הוא בנקודה(a, b) ורדיוסו הוא r. ,הקוד

.5.6מניב את גרף

קובעת את הפרופורציות של axis squareפונקצית . יוצרת רשת קווים המקבילים לציריםgridפונקצית

ניתן גם להוריד את תצוגת מערכת הצירים באמצעות פונקצית . הגרף כך ששני הצירים יראו באותו גודל19axis off.

.axis equal- וaxis tight מפורטות עוד מספר אפשריות שימושיות כמו axis של פונקצית help-ב 19

Page 49: Matlab אובמ - Technion

Matlab-מבוא ל

49

-4 -2 0 2 4 6-3

-2

-1

0

1

2

3

4

5

6

7

יצירת מעגל: 5.6גרף

ספרים קומפלקסים שרטוט מ5.1.3

הוא מספרים קומפלקסים אז הפונקציה מתעלמת מהחלק המדומה ומשרטטת plotאם הקלט של פונקצית אם הקלט הוא ארגומנט קומפלקסי יחיד אז פונקצית . למעט מקרה יוצא דופן יחיד, רק את החלק הממשי

plotמשרטטת את החלק הממשי לעומת החלק המדומה . ,כלומר

c

,לדוגמא הקוד

.5.7מניב את גרף

Page 50: Matlab אובמ - Technion

Matlab-מבוא ל

50

-1 -0.5 0 0.5 1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

שרטוט ערכים קומפלקסים: 5.7גרף

Page 51: Matlab אובמ - Technion

Matlab-מבוא ל

51

שרטוט מספר פונקציות בגרף בודד5.2

. אפשריות לשרטוט מספר פונקציות בגרף בודד3קיימות

מטריצה מכילה את וקטורי הפונקציות,טור וקx ציר 5.2.1

,הרישום הכללי הוא[ ]1 2 Nplot(x, y , y , , y )K

או [ ]1 2 Nplot(x, y ; y ; ; y )K

}כאשר הצמדים }i ix , y , i 1, 2,= Kהם וקטורים באותו אורך .

בצע זאת ניתן להכניס בארגומנט כדי ל. xלעיתים רבות רצוי לשרטט מספר פונקציות לעומת אותו ציר plotפונקצית . ואת הפונקציות בתור וקטורי עמודות או שורות במטריצה, כוקטורx-הראשון את ציר ה

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

,דוגמא,0(שרטוט על גרף יחיד מספר סינוסים בתדרים שונים , 2π π .(הקוד ,

.5.8מניב את גרף

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

מטריצה מכילה את , וקטור xציר (xשרטוט מספר פונקציות לעומת אותו ציר : 5.8גרף

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

Page 52: Matlab אובמ - Technion

Matlab-מבוא ל

52

,י כתיבה"ניתן לקבוע את כל הצבעים לצבע אחיד ע

הערה מקבלת בקלט רק מטריצה היא מתייחסת לכל וקטור עמודה בתור גרף plotאם פונקצית -

-ברישום זה אין שליטה על מערכת ציר. ומשרטטת כל וקטור עמודה בצבע שונה על אותו הגרףx) כאשר צירx 1 איננו מוגדר אז הוא:length(y).(

קציות ווקטורי הפונx צמדי וקטורים מיצגים את צירי 5.2.2

,הרישום הכללי הוא1 1 2 2plot(x , y , x , y , )K

}כאשר הצמדים }i ix , y , i 1, 2,= Kהם וקטורים באותו אורך .

,לדוגמא ,נתונות שלוש פונקציות

( )3

f (x) 3 sin( x)xg(x) 12

h(x) ln(x 1)

= + π = + = +

0בתחום x 5≤ ≤.

,נחשב תחילה

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

.5.9מניב את גרף

Page 53: Matlab אובמ - Technion

Matlab-מבוא ל

53

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

3

4

5

6

xצמדי וקטורים מיצגים את צירי (xשרטוט מספר פונקציות לעומת אותו ציר : 5.9גרף

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

, ולכן הרישוםxהפונקציות משורטטות לעומת אותו וקטור במקרה זה כל

.מניב את אותו גרף

.ברישום זה ניתן גם לשרטט מספר פונקציות לעומת משתנים שונים ,ל"בהמשך לדוגמא הנ

( )3

f (x) 3 sin( x) , 0 x 3yg(y) 1 , 2 y 4.52

h(z) ln(z 1) , 1 y 6

= + π ≤ ≤ = + ≤ ≤ = + ≤ ≤

,הקוד

. 5.10מניב את גרף

Page 54: Matlab אובמ - Technion

Matlab-מבוא ל

54

0 1 2 3 4 5 60

1

2

3

4

5

6

7

8

שוניםxרטוט מספר פונקציות לעומת צירי ש: 5.10גרף

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

hold פונקצית 5.2.3

,holdאופן השימוש בפונקצית

1 1

2 2

N N

plot(x , y )hold onplot(x , y )

plot(x , y )hold off

M

hold onהפקודה . כל פונקצית המייצרת גרף תחליף את הגרף הקודםholdש בפונקצית ללא שימו

כדי להפסיק השמת . גורמת לשמירת גרף קודם והשמת כל גרף חדש על אותו גרף ומערכת צירים ניתן לעבור ממצב, כמו כן. hold offהגרפים הבאים על אותו גרף ומערכת צירים משתמשים בפקודת

onל -off ולהפך באמצעות כתיבת holdהמחליף את המצב בכל פעם .

,לדוגמא הקוד

.5.10מניב את גרף

Page 55: Matlab אובמ - Technion

Matlab-מבוא ל

55

סיכום יתרונות וחסרונות של צורות רישום5.2.4

שילוב של סוגי גרפים שונים

משתנים בלתי תלוים שונים לפונקציות

משתנה בלתי תלוי זהה לכל הפונקציות

צורת רישום

רישום קומפקטי: יתרון ל"לא אפשרי ברישום הנ ל"ישום הנלא אפשרי בראי אפשר לשלוט : חסרון

בסוג ובצבע של כל פונקציה בגרף בנפרד

וקטור ומטריצה. 1

ניתן לשלוט בסוג : יתרון רישום קומפקטי: יתרון ל"לא אפשרי ברישום הנובצבע של כל פונקציה

בגרף בנפרד רישום מסורבל: חסרון

ריםצמדי וקטו. 2

רק בצורת הרישום הזו אפשרי

ניתן לשלוט בסוג : יתרון רישום מסורבל: חסרוןובצבע של כל פונקציה

בגרף בנפרד רישום מסורבל: חסרון

holdפונקצית . 3

סיכום יתרונות וחסרונות של צורות רישום: 5.3טבלה

Page 56: Matlab אובמ - Technion

Matlab-מבוא ל

56

הוספת סימונים לגרפים5.3

מאפשר Matlab. גרפים מקובל גם להוסיף סימונים להבהרת התוצאותבעת הצגת תוצאות באמצעות ,הוספת הסימונים הבאים

כותרת לגרף - y- וx 20כותרות לצירי - תיבת מקרא - טקסט בכל מקום בגרף - קווים וחצים בכל מקום בגרף - מינימום וממוצע, סטטיסטיקה בסיסית כמו מקסימום -

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

,נתונות שתי פונקציות

2

f (x) sin( x) 4g(x) x

= π +

=

3בתחום x 3− ≤ ≤. ,הקוד

. ל ללא תוספת סימונים"גרף זה מתאר את שתי הפונקציות הנ. 5.11מניב את גרף

-3 -2 -1 0 1 2 30

1

2

3

4

5

6

7

8

9

גרף ללא סימוני עזר: 5.11גרף

.zעבור גרף תלת ממדי גם עבור ציר 20

Page 57: Matlab אובמ - Technion

Matlab-מבוא ל

57

רישום סימנים מיוחדים5.3.1

כתב . כתב תחתי וסמלים, כתב עילי, ותרות והשמת טקסט ניתן ליצור אותיות יווניותבפקודות להוספת כ וכתיבת שם האות היוונית \אותיות יווניות באמצעות . _כתב תחתי באמצעות ^, עילי מיוצר באמצעות

היא כמו כתיבת אותיות 21דולותיצירת אותיות יווניות ג. alpha\י כתיבת " מיוצרת עαלדוגמא . באנגלית מיוצרת Γלדוגמא . רק שהאות הראשונה של שם האות היוונית צריך להיות אות אנגלית גדולה, קטנות

.\ מסכמת את כל הסמלים האפשריים ליצור באמצעות 5.4טבלה . Gamma\י כתיבת "ע

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

21xeα נכתוב e^{\alphax_1^2}.

הוספת כותרת5.3.2

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

y- וxר הוספת כותרות לצי5.3.3

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

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

הוספת טקסט5.3.4

,x)הוספת טקסט בקואורדינטות y)י הצבת קואורדינטות תיבת הטקסט ומחרוזת " בגרף מבוצעת ע .textהטקסט הרצויה בקלט של פונקצית

,לדוגמא

.y ובמרכז קואורדינטת x פונקצית טקסט מציבה את המחרוזת מימין לקואורדינטת 22בתור ברירת מחדל

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

. Aלמשל האות אלפא גדולה היא . בטבלה לא מצוינות האותיות היווניות הגדולות שזהות לאותיות אנגליות גדולות 21 .VerticalAlignment - וHorizontalAlignmentאפשריות אחרות באמצעות פונקציות 22

תיבת טקסט

)x,y(

Page 58: Matlab אובמ - Technion

Matlab-מבוא ל

58

\סיכום סמלים הניתנים ליצור באמצעות : 5.4טבלה

Page 59: Matlab אובמ - Technion

Matlab-מבוא ל

59

הוספת תיבת מקרא5.3.5

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

לעיתים רצוי . בתור ברירת מחדל מציבה את תיבת המקרא בפינה הימנית העליונהlegendפונקצית

בת המקרא באופן ניתן להזיז את תי. להציבה במקומות אחרים בגרף שפחות מסתירים את המידע בגרף ,או להוסיף בקלט עוד משתנה המקבל את הערכים הבאים) Unlock Axes Positionבאמצעות (ידני

ערך פעולה

1 )ברירת המחדל(מיקום תיבת המקרא בפינה הימנית עליונה 2 מיקום תיבת המקרא בפינה השמאלית עליונה

3 נה השמאלית תחתונהמיקום תיבת המקרא בפי 4 מיקום תיבת המקרא בפינה הימנית תחתונה 0 במיקום שבו התיבה מסתירה כמה שפחות, מיקום תיבת המקרא בתוך גבולות הגרף

-1 בפינה הימנית עליונה , מיקום תיבת המקרא מחוץ לגבולות הגרף בנפרד

legendאפשריות מיקום : 5.5טבלה

,קודלדוגמא ה

.מציב את תיבת המקרא בחלק המרכזי עליון כך שתיבת המקרא לא תסתיר דבר

הוספת סטטיסטיקה בסיסית5.3.6

מחשב מספר ביטויים סטטסטיים של הפונקציות ובאמצעותו ניתן בקלות להוסיפם Data Statisticsחלון .5.12כפי שמודגם בגרף Data Statistics - וToolsי לחיצה על "חלון זה נפתח ע. לגרף

Data Statisticsחלון : 5.12גרף

Page 60: Matlab אובמ - Technion

Matlab-מבוא ל

60

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

fתנה ערך הפונקציה כדי לסמן את התחום בו מש, לדוגמא (x) sin( x) 4= π max- וmin נסמן ערכי + . של פונקציה זוYעבור

הוספת קווים וחצים 5.3.7

, אך חצים אלו יכולים להיות בכיוון ימינה. \ באמצעות האופרטור textניתן לייצר חצים בפונקצית ).7.1ראו פרק (לשהם מבוצע באופן ידני שרטוט קווים וחצים כ. למעלה ולמטה, שמאלה

סיכום הוספת סימונים לגרפים 5.3.8

.5.323 מציג את כל תוספות הסימונים בפרק 5.13גרף

. וסדר כתיבתן אינו משנהplotכל פקודות הוספת הסימונים חייבות להיכתב לאחר פונקצית

-3 -2 -1 0 1 2 30

1

2

3

4

5

6

7

8

9An example of graph annotation

x

y

←x2

sin(π⋅x)+4→

sin(π⋅x)+4sin(π⋅x)+4 minsin(π⋅x)+4 maxx2

גרף עם סימוני עזר: 5.13גרף

fהטקסט לערכי מינימום ומכסימום של הפונקציה 23 (x) sin( x) 4= π . בתיבת המקרא שונו באופן ידני+

Page 61: Matlab אובמ - Technion

Matlab-מבוא ל

61

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

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

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

.5.14מניב את גרף

-3 -2 -1 0 1 2 30

1

2

3

4

5

6

7

8

9

x

y

An example of graph annotation

←x2

sin( π⋅x)+4 →

sin(π⋅x)+4x2

גרף שחלק מתכונות אובייקטים של גרפיקה שלו שונו: 5.14גרף

הערות .7.2 כפי שמפורט בפרק set- וgetהדרך המסובכת יותר היא שימוש בפונקציות - ה של כל אובייקטים של גרפיקה ותכונותיהם התבוננו בקובץ העזרה כדי לראות רשימ -

Handle Graphics Online Documentation) בפורמטhtml.(

Page 62: Matlab אובמ - Technion

Matlab-מבוא ל

62

fill פונקצית 5.4

ל רצוי למלא את "למשל בדוגמא הנ. fillת פונקצית ניתן למלא אזור בגרף בין שתי פונקציות באמצעו2האזור בין הסינוס והפרבולה באזור x 2− ≤ . בצבע אדום≥

,הקוד

.5.15מניב את גרף

-3 -2 -1 0 1 2 30

1

2

3

4

5

6

7

8

9

x

y

An example of graph annotation

←x2

sin(π⋅x)+4→

area between sin(pi*x)+4 & x2area between sin(π⋅x)+4 & x2

sin(π⋅x)+4x2

fillהדגמת פונקצית : 5.15גרף

לכן (כלומר נקודות לאורך גבול האזור התחום . זור סגור הוא נקודות היוצרות אfillהקלט של פונקצית י הכנסת הפונקציה " בוצע עyבדוגמא זו השרשור בציר ). נקודת ההתחלה תהיה זהה לנקודת הסיום

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

Page 63: Matlab אובמ - Technion

Matlab-מבוא ל

63

plotyy פונקצית 5.5

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

.תלוי ,לדוגמא הקוד

.5.16ת גרף מניב א

0 2 4 6 8 10 12 14 16 18 200

20

40

x0 2 4 6 8 10 12 14 16 18 20

-1

0

1

plotyyהדגמת פונקצית : 5.16גרף

או לשנות את סגנון או , שונה לכל אחדylabelכדי לציין . שונות2y ושל 1yנשים לב כי הסקלה של .plotyy של help- ובset בפונקצית רצבע הקווים יש להיעז

קריאת ערכים ישירות מהגרפים5.6

,י כתיבת"קריאת ערכים ישירות מגרף מבוצעת ע

עולה הגרף ) scriptאו ששורה זו מבוצעת בקובץ (Command Window- בEnterברגע שלוחצים על

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

.Enterכדי לסיים לוחצים על . x,yקואורדינטות לוקטורים

Page 64: Matlab אובמ - Technion

Matlab-מבוא ל

subplotמספר גרפים יחד באמצעות פונקצית השמת 5.7

,subplotניתן ליצור מספר גרפים באותו חלון גרפיקה באמצעות פונקצית

. גרפים בתוך חלון הגרפיקה-שני הארגומנטים הראשונים קובעים את מספר השורות והעמודות של התת. כ מלמעלה למטה"גרפים כאשר הסדר הוא משמאל לימין ואח-שלישי הוא האינדקס של התתהארגומנט ה

הבא אחריו subplot - אחד לsubplotנקודה חשובה היא כי כל הפקודות בין . להמחשה5.17ראו גרף .הגרף הנידון-משפיעות רק על התת

M

M

M

M

M

M

Figure No.1

64

subplotפונקצית : 5.17גרף

,לדוגמא הקוד

Page 65: Matlab אובמ - Technion

Matlab-מבוא ל

65

.5.18מניב את גרף

-5 0 50

0.2

0.4

0.6

0.8

1Bar Plot Stacked Area Plot

1 2 3 40

5

10

15

28%6%

22%

3D Pie Plot

33%

11%

0 100 200-1

-0.5

0

0.5

1Stem Plot

0 5 10-1

-0.5

0

0.5

1Stairs Plot

210 211 212-48.6

-48.4

-48.2

-48

-47.8Scatter Plot

subplotדוגמא לשימוש בפונקצית : 5.18גרף

Page 66: Matlab אובמ - Technion

Matlab-מבוא ל

66

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

. 24פרק זה סוקר יצירת קווים תלת ממדיים ומשטחים תלת ממדיים

קווים תלת ממדיים6.1.

, היאplot של פונקצית ממדית-הגרסה התלת1 1 1 2 2 2plot3(x , y , z , x , y , z , )K

}כאשר }i i ix , y , z , i 1, 2,= Kשלישיות של וקטורים בעלי אותו , יכולים להיות שלישיות של סקלרים

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

1 1 1 1 2 2 2 2plot3(x , y , z ,c , x , y , z ,c , )K

textההבדלים היחידים הם שבשימוש בפונקצית . פונקציה זו מתפקדת בדומה למקבילה הדו ממדית שלה .zlabel נקבעת באמצעות פונקצית z של ציר ת והתוויzצריך להוסיף עוד קוארדינטה בשביל ציר

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

.6.1מניב את גרף

לחיצה על הכפתור הימני ובחירת סוג הגרף , י סימון המטריצה" עWorkspaceניתן לשרטט גרפים באופן ישיר מחלון 24

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

Page 67: Matlab אובמ - Technion

Matlab-מבוא ל

67

01

2

0

1

20

0.5

1

x

top

Pyramid

y

z

-0.50

0.5

-1

0

10

20

40

x

Spiral

top

y

z

3plotדוגמא לשימוש בפונקצית : 6.1גרף

Page 68: Matlab אובמ - Technion

Matlab-מבוא ל

68

משטחים תלת ממדיים6.2

,משטח תלת ממדי מוגדרz f (x, y)=

רישום כללי של . surf - וmeshציות הפונקציות הבסיסיות ליצירת משטחים תלת ממדיים הן פונק

,פונקציות אלו

באמצעות פונקצית x,y הן מטריצות הקואורדינטות המופקות מוקטורי קואורדינטות X,Yכאשר

meshgrid . מטריצהZ היא מטריצה בעלת אותם ממדים כשל מטריצות X,Y. Zי מטריצת הגובה " יוצרת רשת קווים שצבעם נקבע עmeshי הפונקציות הוא שפונקצית ההבדל בין שת

. Z25י מטריצת הגובה " יוצרת משטחים המורכבים מטלאים שצבעם נקבע עsurfולעומת זאת פונקצית . Zבה י מטריצת הגו" יוצרת טלאים לבנים שצבע מסגרתם נקבע עmeshכביכול פונקצית

, דוגמא

,רצוי לשרטט את הפונקציה( )2 2

2x yf (x, y) 5sin xy 10e 1

15− +π = + +

בתחום -3 x 3-3 y 3

≤ ≤ ≤ ≤

.

,הקוד

. בהתאם6.3- ו6.2מניב את גרפים

).ברירת מחדל שחור( רשת הקווים בצבע אחיד surfבפונקצית 25

Page 69: Matlab אובמ - Technion

Matlab-מבוא ל

69

-3-2

-10

12

3

-4

-2

0

2

40

5

10

15

xy

z

meshשרטוט באמצעות פונקצית : 6.2גרף

-3-2

-10

12

3

-4

-2

0

2

40

5

10

15

xy

z

surfשרטוט באמצעות פונקצית : 6.3גרף

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

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

Page 70: Matlab אובמ - Technion

Matlab-מבוא ל

70

meshgridתזכורת לפונקצית

)פונקציה זו מקבלת שני וקטורים )x, yכקלט ,

,כאשרx- וקטור [n 1]× y- וקטור [m 1]×

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

[ ][ ]

1 2 3 4

1 2 3

x x x x x ;

y y y y ;[X,Y] meshgrid(x, y);

=

=

=

,יוצרות את המטריצות1 2 3 4

1 2 3 4

1 2 3 4

1 1 1 1

2 2 2 2

3 3 3 3

x x x xX x x x x

x x x x

y y y yY y y y y

y y y y

⇐ ⇐

,ומתקיים

j, X(i, j) x(i)i, Y(i, j) y( j)

∀ =∀ =

איבר Z מניב את אותן תוצאות כמו חישוב מטריצת Y- וXלכן שימוש באופרטור הנקודה עם המערכים

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

ניתן לשנות את Matlab-ב. view הוצגה בפעם הראשונה פונקצית 6.3- ו6.2בקוד ליצירת גרף . rotate3dאו באמצעות פונקצית ) 5.15ראו גרף (י לחיצה על הכפתור "האורינטציה של הגרף ע

viewצפיה רצויה ורוצים שכל פעם הגרף יוצג בזוית צפיה זו משתמשים בפונקצית ברגע שמוצאים זוית ,באופן הבא

.6.4ראה גרף . מגדירים את האורנטציה באמצעות אזימוט והגבהה ,ביצוע הקוד

Page 71: Matlab אובמ - Technion

Matlab-מבוא ל

71

י הצבת ערכים אלו בקלט של "קביעת האורנטציה של הגרף מבוצעת ע. ל"מציב ערכים אלו במשתנים הנ ,26viewפונקצית

viewמשמעות אזימוט והגבהה לפונקצית : 6.4גרף

- וsurfc נחליפן בפונקציות mesh- וsurfאם ברצוננו לקבל גם קווי מתאר מתחת לגרף עבור פונקציות meshc האות ( בהתאםc מיצגת את המילה contourשמשמעותה קווי מתאר .(

,לדוגמא הקוד

.6.5מניב את גרף

-3-2

-10

12

3

-4

-2

0

2

40

5

10

15

xy

z

surfcשרטוט באמצעות פונקצית : 6.5גרף

.az=-37.5 el=30 וערכי ברירת המחדל של גרף תלת ממדי הם az=0 el=90ערכי ברירת המחדל של גרף דו ממדי הם 26

Page 72: Matlab אובמ - Technion

Matlab-מבוא ל

72

,ניתן להוריד את רשת הקווים באופן הבא ,לדוגמא הקוד

.6.6מניב את גרף

-3-2

-10

12

3

-4

-2

0

2

40

5

10

15

xy

z

שרטוט ללא רשת הקוים: 6.6גרף

camlight בכיוון רצוי באמצעות פונקצית 27גם להוסיף תאורהלמען יצירת תחושה של אוביקט פיסי ניתן ,ל"הוספת השורות הנ, לדוגמא. lightingולבחור את סוג התאורה עם פונקצית

.6.7 לגרף 6.6משנות את גרף

.surflם בעלי תאורה והצללה גם באמצעות פונקצית ניתן ליצור גרפי 27

Page 73: Matlab אובמ - Technion

Matlab-מבוא ל

73

הוספת תאורה לגרף: 6.7גרף

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

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

איברים אלו קובעים את יחס הצבעים . 1- ל0 איברים בעלי ערכים בין 3 הוא וקטור בעל cכאשר

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

מספר צבעים ידועים וערכיהם: 6.1טבלה

Page 74: Matlab אובמ - Technion

Matlab-מבוא ל

74

,לדוגמא הוספת הקוד

.6.8מניבה את גרף

קביעת צבע אחיד למשטח: 6.8גרף

,אפשריות נוספות הן . grid onי כתיבת " והדלקתה חזרה עgrid offי כתיבת "כיבוי רשת הצירים ע - .box offי כתיבת " והורדתה עbox onי כתיבת "הצבת קופסא סביב הגרף ע - axis on.י כתיבת " והדלקתה חזרה עaxis offי כתיבת "כיבוי מערכת הצירים ע -

, waterfall- וmeshzבשם , surf- וmeshקיימות עוד שתי פונקציות המהוות וריאציות לפונקציות

.המיצרות גרפים מעט שונים ,הקוד

. בהתאם6.10- ו6.9מניב את גרפים

Page 75: Matlab אובמ - Technion

Matlab-מבוא ל

75

-3-2

-10

12

3

-4

-2

0

2

40

5

10

15

xy

z

meshzפונקצית : 6.9גרף

-3-2

-10

12

3

-4

-2

0

2

40

5

10

15

xy

z

waterfallפונקצית : 6.10גרף

Page 76: Matlab אובמ - Technion

Matlab-מבוא ל

76

קווי מתאר6.3

,קווי מתאר פונקציות ליצירת גרפים של 3קיימות יצירת קווי מתאר דו ממדיים .1

,לדוגמא הקוד

.6.11מניב את גרף

אם אין צורך . ל מציג את הערכים של קווי המתאר" באופן הנclabelהשימוש בפונקצית

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

יצירת קווי מתאר תלת ממדיים .2

,לדוגמא הקוד

.6.12ב את גרף מני

.contourפונקציה זו זהה בתפעולה לפונקציה

יצירת קווי מתאר דו ממדיים מלאים .3

. רק שכעת המרווחים בין קווי המתאר מולאו בצבעcontourפונקציה זו דומה לפונקציה אך לעיתים המספרים אינם ברורים ולכן כחלופה , אפשריclabelבתצוגה כזו שימוש בפונקציה

פונקציה זו מציבה עמודת צבע לצד הגרף המעידה על הערך . colorbarניתן להשתמש באופצית ניתן להשתמש בפונקציה זו בכל גרף תלת ממדי אך היא אפקטיבית בגרפים . הנומרי של כל צבע

). surf, surfc, contourfגרפים של (מלאים

,לדוגמא הקוד

.6.13מניב את גרף

Page 77: Matlab אובמ - Technion

Matlab-מבוא ל

77

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

-2

-1

0

1

2

3

2

2

2

2

2

3 33

4

4

4

4

4

5

5

5

5

5

6

7

8

9

10

x

y

clabel- וcontourשרטוט קווי מתאר באמצעות פונקציות : 6.11גרף

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

0

2

2

4

6

8

10

2

2

2

2

2

3

3

3

3

3

4

4

4

4

4

5

5

5

5

5

67

89

10

xy

z

clabel- וcontour3שרטוט קווי מתאר באמצעות פונקציות : 6.12גרף

Page 78: Matlab אובמ - Technion

Matlab-מבוא ל

78

2

3

4

5

6

7

8

9

10

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

-2

-1

0

1

2

3

x

y

colorbar- וcontourfשרטוט קווי מתאר באמצעות פונקציות : 6.13גרף

Page 79: Matlab אובמ - Technion

Matlab-מבוא ל

79

הצגת מספר משטחים על גרף יחיד 6.4

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

,לדוגמא2 עוד פרבולה 6.3- ו6.2מא מפרק נוסיף למשטח הדוג 2g(x, y) x y 4= + + .

,הקוד

.6.14מניב את גרף

שרטוט מספר משטחים על גרף יחיד: 6.14גרף

Page 80: Matlab אובמ - Technion

Matlab-מבוא ל

80

. שני המשטחים חותכים אחד את השני וכתוצאה מכך הפונקציה התחתונה מוסתרת בחלקה6.14בגרף ניתן לקבוע את דרגת . ות שקופים במידה מסויימתלכן אפשרות שימושית היא לגרום למשטחים להי 0פרמטר זה יכול לקבל סקלר בעל ערכים בין . alphaהשקיפות של המשטחים בגרף באמצעות פרמטר

. שקיפות מוחלטת0-ו, מייצג אטימות מוחלטת1 כאשר 1-ל ,לדוגמא

. נשנה את שקיפות המשטח העליון בלבד ,הקוד

.6.15רף מניב את ג

alphaשרטוט מספר משטחים על גרף יחיד ויצירת שקיפות עם פרמטר : 6.15גרף

Page 81: Matlab אובמ - Technion

Matlab-מבוא ל

81

שליטה בגרפים. 7

התכונות של אובייקטים גרפיים . טקסט ועוד, קווים, מכילים אובייקטים של ציריםMatlab-גרפים ב . Handle Graphicsניתנות לשינוי באופן ידני או באמצעות

שליטה ידנית בגרפים7.1

כפי שמופיע toolbar)( או דרך סרגל העבודה Insert ניתנות לקביעה דרך תפריט 5.3הפקודות בפרק .7.1בגרף

חלון גרפי טיפוסי: 7.1גרף

. Editהתכונות של אובייקט הגרף ואובייקט הצירים ניתנות לשינוי דרך תפריט

לחיצה על . 28י לחיצה על חץ העריכה ולחיצה על האובייקט הרצוי"סימון אובייקט לעריכה מבוצע ע . 7.1הכפתור הימני של העכבר על אובייקט מסומן פותחת אפשריות עריכה כפי שמודגם בגרף

לון זה ניתן בח. פותחת את חלון עריכת התכונותPropertiesלחיצה על , כדי לגשת לכל תכונות האובייקט מוצג חלון עריכת תכונות של אובייקט 7.2בגרף . סגנון ועוד, עובי קו, לשנות פרמטרים רבים כמו צבע

.קו

.י לחיצה על כפתור חץ העריכה"יוצאים ממצב עריכה ע 28

חלון' מסחץ עריכה סיבוב הגרף

הגדלהוהקטנה

,הוספת קוויםוטקסט, חצים

ניתן להזיזכל טקסט

י לחיצה"עקבועהומשיכה

טאובייק מסומן

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

פותח חלוןיכת תכונות

ער
Page 82: Matlab אובמ - Technion

Matlab-מבוא ל

82

חלון עריכת תכונות: 7.2גרף

לחיצה על הכפתור הימני של , י סימונו באמצעות חץ העריכה"ניתן לשנות ידנית את מבנה את הגרף ע. לכווץ את הגרף, למתוח, כעת ניתן להזיז.Unlock Axes Position על גבול הגרף ובחירת העכבר

. שימוש אפשרי של תכונה זו הוא השמת גרף על גרף ,דוגמאכלומר שתגובת התדר שלו נמצאת . עומד בדרישות רוצים לבדוק כי הואLow Pass Filter תבבניי

בקצה אזור המעבר הדרישה היא הכי תובענית ולכן רצוי . 7.3מן בקווים הירוקים בגרף בתחום המסוי שחרור הצירים של הגרף "הדבר נעשה במקרה זה ע. לשים על אותו גרף גם תמונת תקריב של האזור

באחד הגרפים והזזתו למיקום zoom inביצוע , paste- וcopyשכפול הגרף באמצעות , כפי שהוסבר. הרצוי בגרף השני

הדגמת הדבקת חלון על חלון בצורה ידנית: 7.3גרף

כל שיטוט בסוג האובייקט האובייקטים של הגרף

תכונות אובייקט גרפי מסוג קו

Page 83: Matlab אובמ - Technion

Matlab-מבוא ל

Handle Graphics אובייקטים של 7.2

-וצר גרפים ו מציג מידע ויMatlab הם רכיבי השרטוט הבסיסיים בעזרתם Handle Graphicsאובייקטי GUI-לכל אובייקט גרפיקה מקושר . יםhandleשדרכו ניתן לשנות את התכונות של האובייקט .

,7.4 היא כמתואר בגרף Handle Graphicsההיררכיה של אובייקט

Root

83

Handle Graphicsכיה של אובייקט הירר

Handב -Matlabלמשל כדי . נובע מהתלות של אובייקטי הגרףקה כדי לצייר צירים חייבים חלון גרפי). Axes(ריך מערכת צירים

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

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

Figure

s

Image RectangPatch Line Light

Uicontexmenu

Axe Uicontrol Uimenu

:7.4גרף

le Graphicsהטבע ההיררכי של צMatlab-ב) Line(לשרטט קו

)Figure .( מוצגת דוגמא הממחיש7.5בגרף

גרף

TextSurface le

Page 84: Matlab אובמ - Technion

Matlab-מבוא ל

84

. מפורטים סוגי אובייקט גרפיקה7.1בטבלה

סוג אובייקט פרוט תפקוד אובייקט גרפיקה יקהגרפ

קיים רק אובייקט אחד כזה וכל שאר האובייקטים הם צאצאים . שולט בתצוגת המסך . יוצר את האובייקט הזה באופן אוטומטי וניתן לשנות את תכונותיוMatlab. שלו

Root

. איננו מגביל את מספר חלונות הגרפיקהMatlab. שולטים ביצירת חלונות גרפיקה וכל שאר האובייקטים הם root-של ה) children(ים הם ילדים -Figure-כל ה

.Figure-הצאצאים של ה

Figure

popup(למשל תפריטים נפתחים . שולטים בבקרים המקבלים קלט בממשק גרפיmenu .(נשים לב כי לפי ההיררכיה אין תלות בין אובייקט , למשלaxes לאובייקט

Uicontrol.

Uicontrol

Uimenu .7.6שולטים בתפריטים הממוקמים בראש חלון גרפיקה כפי שמוצג בגרף שולט בתפריטים הצצים כאשר מקישים על אובייקט גרפיקה באמצעות כפתור

.העכבר הימניUicontextmenu

,image(ם בחלון הגרפיקה שבו יוצג הגרף ומסדר את הילדים שלו מגדיר תחוlight, line, patch, rectangle, surface, text (ל"בתוך התחום הנ.

Axis

קיימים . colormap מורכב ממטריצת תמונה ואולי גם Matlab-אובייקט תמונה ב ,indexed -שלושה סוגי דרכים בהן מטריצת התמונה מפורשת כצבע הפיקסלים

intensity, truecolor.

Image

surface. Light- וpatchמגדיר מקורות תאורה המשפיעים על אובייקטי Line .ממדית-תלתממדית ו-האלמנטים הבסיסיים אתם יוצרים קווים לגרפיקה דו

משתמשות fillפונקציות כמו . ממולאים בעלי קצוות) רב מצולעים(פוליגונים .באובייקטים אלו

Patch

Rectangle .ממדיים בעלי צורות היכולות לנוע בין מלבן לאליפסה-משטחים דוי שרטוט כל אלמנט של מטריצה כגובה מעל מישור "טריצה עממדי של מ-ייצוג תלת

x-y. Surface

משתמשות title, xlabel, ylabelפונקציות עליות כמו . מחרוזות תווים .באובייקטים אלו

Text

סוגי אובייקט גרפיקה: 7.1טבלה

Uimenuי אובייקט "תפריטים הנשלטים ע: 7.6גרף

Page 85: Matlab אובמ - Technion

Matlab-מבוא ל

85

יצירת גרפים באמצעות הפונקציות הבסיסיות ליצירת גרפים7.2.1

למשל כדי לייצר אובייקט . לכל סוג אובייקט גרפיקה קיימת פונקציה ליצירת האובייקט בעלת אותו שםSurface משתמשים בפונקצית surface . יותר כמו " עיליות"פונקציותcontour ,surfמשתמשות ' וכו

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

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

'propertyname'handle = function( ,propertyvalue,...)

,לדוגמא הקוד

7.7יוצר את גרף

7.7גרף

,פרשנות הקוד קובעת את מיקום וממדי חלון figure של אובייקט positionתכונת . משלוhandleלכל אובייקט , איברים4ס וקטור בעל "הגרפיקה ע

[ ]left, bottom, width, height

Page 86: Matlab אובמ - Technion

Matlab-מבוא ל

86

מייצגות את המיקום של הפינה השמאלית התחתונה של חלון הגרפיקה מהפינה bottom- וleftכאשר י " עהיחידות נקבעות. קובעות את ממדי חלון הגרפיקהheight- וwidth. השמאלית תחתונה של המסך

.Unitsתכונת Axes- בColorתכונת , לעומת זאת. מציינת את צבע הרקע בחלון הגרפיקהFigure- בColorתכונת

.מציינת את צבע הרקע של מערכת הצירים . קובעות את הטיקים במערכת הציריםYtick- וXtickתכונות .x-y-z קובעות המשטח במישור XData ,Ydata ,Zdatatתכונות

קבלת וקביעת תכונות של אובייקט גרפיקה7.2.2

בנוסף הן גם מאפשרות פירוט כל . קובעות ומחזירות תכונות של אובייקט גרפיקהget- וsetפונקציות . 29ם האפשריים של תכונות האובייקטהערכי

,הרישום הבסיסי לקביעת ערך של תכונת אובייקט גרפיקה

,הרישום הבסיסי לקבלת ערך של תכונת אובייקט גרפיקה

ונה לעומת זאת הערך שיוצב בתכ. הם תמיד מחרוזותPropertyNameנשים לב כי שמות של תכונות PropertyNameלא חייב להיות בהכרח מחרוזת כפי שמצוין ברישום הבסיסי .

,לדוגמא הקוד

. הנוכחי הוא עיגולmarker- לפנטגון אם הsurface של משטח marker-משנה את ה

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

, נרשוםmarkerלמשל כדי להציג את הערכים האפשריים של תכונת

,ונקבל

.הסוגריים המסולסלות מציינות את ערך ברירת מחדל ,למשל הקוד. set, getעות פונקציות ניתן לבצע שינויים בגרפים שנוצרו באמצ

Handle Graphics Online Documentationרשימה של כל האובייקטים של גרפיקה ותכונותיהם קיימת בקובץ העזרה 29

).htmlבפורמט (

Page 87: Matlab אובמ - Technion

Matlab-מבוא ל

87

.7.8מייצר את גרף

h הוא handle לאובייקט line שפונקצית plotמייצרת .

7.8גרף

,הקוד

.7.9 לגרף 7.8משנה את גרף

a הוא מערך structureהמכיל את תכונות אובייקט ה -line .

7.9גרף

Page 88: Matlab אובמ - Technion

Matlab-מבוא ל

88

Editor/Debuggerחלון. 8

Editor/Debuggerחלון : 8.1גרף

בחלון זה . Matlab-ת ב הוא החלון דרכו מבוצע הרוב המכריע של התכנוEditor/Debuggerחלון .Matlab- שהם קבצי הקוד בm.כותבים קבצי

כלומר הפקודות מבוצעות אחת אחרי , scriptהאחד הוא קבצי . mקיימים שני פורמטים לכתיבת קבצי בחסיכת חזרה הואscriptהשימוש המרכזי בפורמט . Command Window-השניה כאילו שהן נכתבו ב

הפורמט השני הוא פונקציות המקבלות קלט ומחזירות פלט . Command Window-על רצף פקודות בכל הפונקציות , C-חוץ ממספר פונקציות בסיסיות המקומפלות ב. שמשתניה הם פנימיים ולא גלובליים

.type30ית וניתן לראות פונקציות אלו באמצעות פונקצm. בנויות כפונקציה בקובץ Matlabשל או דרך Editor/Debugger בחלון F5 או על כפתור י לחיצה על הסימן " מבוצעת עm.הרצת קבצי

. Command Window-ה

הערות Dockי בחירת אופציית "ר החלונות ע יחד עם שאEditor/Debuggerניתן לשלב את חלון -

. בפינה הימנית עליונה בחלון כלשהו פותחת אותו בנפרדלחיצה על הסימן . Viewבתפריט . מעיד על כך שהגרסה הנוכחית של הקובץ איננה שמורהm.בכותרת של קובץ * סימן -

). C-חוץ ממספר פונקציות המקומפלות ב (Matlab מציגה את תוכן פונקציות סטנדרטיות של typeפונקצית 30

Page 89: Matlab אובמ - Technion

Matlab-מבוא ל

89

יצירת הערות8.1

הערות מסומנות בצבע . וכתיבת הטקסט הרצוי לאחריו% האחוזים יצירת הערות מבוצעת באמצעות סימן . מתעלם מהן לחלוטיןMatlab -ירוק ו

ניתן . Text בתפריט Comment או בחירת אופציית Ctrl+Rי הקלדת "ניתן להפוך מקטע שלם להערה ע Uncomment או בחירת אופציית Ctrl+Tי סימון המקטע הרצוי והקלדת "להסיר את האחוזים ע

. Textבתפריט

מלות מפתח8.2

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

,אדוגמא לשימוש פסול במלות המפתח הו

מציאת והחלפת תווים 8.3

שבאמצעותו ניתן Find & Replace פותחת את חלון Ctrl+F או לחיצה על לחיצה על הסימן ,למצוא ולהחליף תווים

חלון חיפוש והחלפה תווים: 8.2גרף

Page 90: Matlab אובמ - Technion

Matlab-מבוא ל

90

)Bookmark(מנייה סי8.4

או בחירת אופצייתCtrl+F2י השמת הסמן בשורה הרצויה ולחיצה על "הוספת והורדת סימנייה מבוצע עSet/Clear Bookmark בתפריט Edit .

. מעבירה את הסמן לסימניה הבאהEdit בתפריט Next Bookmark או בחירת אופציית F2לחיצה על מעבירה את הסמן לסימניה Edit בתפריט Prev Bookmark או בחירת אופציית Shift+F2לחיצה על . הקודמת

ות ארוכים בהם ברצוננו לעבור בין שורות ספציפיות הרחוקm.אופציה זו שימושית בעיקר עבור קבצי

.אחת מהשניה

הערה .סימניות אינן נשמרות בעת סגירת קבצים -

קיצורים שימושיים8.5

,להלן סיכום של מספר קיצורים שימושיים

קיצור פעולהcopy Ctrl+C paste Ctrl+V cut Ctrl+X undo Ctrl+Z redo Ctrl+Y select all Ctrl+A Balance Delimiters31

Ctrl+B

close file Ctrl+W new file Ctrl+N go to line Ctrl+G find & replace Ctrl+F add remark Ctrl+R remove remark Ctrl+T Set/clear Bookmark Ctrl+F2 Next Bookmark F2 Prev Bookmark Shift+F2 Save Ctrl+S exit execution Ctrl+C exit execution Ctrl+Break exit Matlab Ctrl+Q

מספר קיצורים שימושיים: 8.1טבלה

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

Page 91: Matlab אובמ - Technion

Matlab-מבוא ל

91

)Flow Control(בקרת זרימה . 9

,Matlab-להלן פקודות בקרת הזרימה ב

9.1טבלה

הקובעת endה מצורפת פקודת לפקודות הלולאה וההתני. ל שולטות בסדר ביצוע הקוד"כל הפקודות הנ 32תנאי לוגי יכול להיות אמת. תנאי ביצוע הקוד הוא תנאי לוגיwhile- וifבפקודות . את סיום הפקודה

כלומר שתי פקודות אלו מבצעות קוד רק אם התנאי הלוגי הוא ). 0ערך נומרי (או שקר ) 1ערך נומרי ( .אמת . 9.2בנות תנאי לוגי מאופרטורים לוגיים או יחסיים המפורטים בטבלה ניתן ל

אופרטורים יחסיים אופרטורים לוגיים

אופרטור משמעות אופרטור משמעותANDקטן & לוגי <

ORקטן שווה | לוגי <= NOTגדול ~ לוגי > XORלוגי xor גדול שווה >=

נכון אם כל האיברים שונים מאפס

all 33שווה ==

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

any שונה(אינו שווה( ~=

9.2טבלה

isemptyלמשל הפונקציה . *isבאמצעות פונקציות הבודקות מצבים מהסגנון ניתן גם לבנות תנאי לוגי

.בודקת אם מטריצה היא מטריצה ריקה

,דוגמאות ,התנאי

.0מניב ערך

,התנאי

.1מניב ערך

. כל ערך נומרי השונה מאפס נחשב לאמת לוגיMatlab-ב 32 .היא השוואה== היא הצבה ומשמעות = חשוב לזכור כי משמעות סימן ==. במקום = מאד היא כתיבת סימן טעות נפוצה 33

פקודה שימוש מבצעת מקבץ פקודות על סמך תנאים לוגייםelse- וelseifיחד עם פקודות switch ס ערך של משתנה" מבצעת מקבץ פקודות שונות עotherwise- וcaseיחד עם פקודות

try…catch משנה את ניתוב הפקודות אם מתגלה טעות בזמן הביצוע ס תנאי לוגי"ע, מבצעת מקבץ פקודות מספר בלתי מוגבל של פעמים

for מבצעת מקבץ פקודות מספר פעמים קבוע continue ות הנותרות בלולאה ללא ביצוע הפקודwhile או forמדלג לאיטרציה הבאה של לולאת

while break או forמפסיק את ביצוע לולאת return גורם להרצה לחזור לפונקציה שקראה לה

פקודות התניה

פקודותלולאה

פקודותיציאה

מוקדמת

Page 92: Matlab אובמ - Technion

Matlab-מבוא ל

92

?מה קורה כאשר משתמשים במטריצות במקום סקלרים בתנאי לוגי

. 34 מטריצות מאותו גודלA ,Bנניח כי , למשל. א אמת רק אם כל האיברים מקיימים אותוהתנאי הלוגי הו . התואמיםB גדולים מכל איברי A הוא שכל איברי A>Bמשמעות התנאי

.אם המטריצות אינן באותו גודל אז מתקבלת הודעת שגיאה 34

Page 93: Matlab אובמ - Technion

Matlab-מבוא ל

93

if פקודת 9.1

, היאifהצורה הבסיסית ביותר של פקודת

ימשיך בביצוע הפקודות לאחר Matlab- יבוצעו וend- אז כל הפקודות עד הtrue אם התנאי הלוגי הוא וממשיך בביצוע end- מדלג על כל הפקודות עד הMatlab אז falseאם התנאי הלוגי הוא . end-ה

.end-הפקודות לאחר ה ,לדוגמא

,שני הרישומים הבאים שקולים. ס מוגדר ככל ערך שונה מאפtrue ערך Matlab-ב

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

,למשל

,השוואת בין מטריצה לסקלר

else if- וelseת פקודו9.1.1

. מוסיפות התניה נוספתelseif- וelseפקודות

elseפקודת

)else ifאו פקודת (if-הפקודות הקשורות לה מבוצעות אם התנאי הלוגי של פקודת ה. אין לה תנאי לוגי .falseיה ה

,דוגמא

Page 94: Matlab אובמ - Technion

Matlab-מבוא ל

94

ifelse פקודת

- אז התנאי הלוגי של פקודת הfalseהקודמת היה ) else ifאו פקודת (if-אם התנאי הלוגי של פקודת הelse if מחושב ואם הוא trueאז הפקודות הקשורות לה מבוצעות . ,לדוגמא

.else ifומספר בלתי מוגבל של פקודות , יחידelse- ניתן להשתמש בifביחד עם פקודת ,דוגמא מורכבת

בסוף כל שורה כדי להקל Enterי לחיצה על "מומלץ מאד להשתמש בפיסוק המבוצע באופן אוטומטי ע. מהר מאד הקוד הופך לבלתי מובן לחלוטיןMatlab של indenting-ללא השימוש ב. על הבנת הנכתב

,indentingלמשל אותו קוד ללא

הערה

,של שורות קוד מסומנות) Indenting(ישנן מספר אפשריות לריווח .]+Ctrl - אחד שמאלהtab-הזזת הקוד המסומן ב .1 .[+Ctrl - אחד ימינהtab-הזזת הקוד המסומן ב .2 .Ctrl+I -מלות המפתחריווח לפי .3

Page 95: Matlab אובמ - Technion

Matlab-מבוא ל

95

switch פונקצית 9.2

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

הוא לא expressionאם ערך . expression אחד מבוצע בהתאם לערך של case רק switchבפונקצית לעתים רבות במקרה . otherwise-ים אז מבוצעות הפקודות ב-case-אחד מהערכים המצוינים ב

otherwiseבגלל שהתקבל ערך לא רצוי או צפוי של 35 מפסיקים את ההרצה expression. ,דוגמא

aהוא סקלר ,

,דוגמאnameהוא מחרוזת ,

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

. המפסיקה את ביצוע ההרצהerrorמציבים פונקצית 35

M

Page 96: Matlab אובמ - Technion

Matlab-מבוא ל

96

catch- וtry פונקציות 9.3

, הואcatch- וtryהמבנה הכללי של פונקציות

אם לא נוצרה שגיאה בפקודות . מבוצעות עד אשר נוצרת שגיאהstatements_tryבמבנה זה הפקודות אם נוצרה שגיאה בפקודות . statements_catchההרצה נפסקת ללא ביצוע פקודות , אלו

statements_try אז Matlabר לביצוע הפקודות עובstatements_catch .אם גם ב- statements_catch נוצרה שגיאה אז Matlabמפסיק את ההרצה .

,דוגמא

עד לשגיאה catchלכן מבוצעות פקודות . וזוהי שגיאה0 מנסה להציב לווקטור באינדקס try-פקודה ב .statements_catch-הראשונה ב

הוא כאשר ידוע לנו שיש סיכוי טוב שבעת ביצוע פקודות catch- וtryפונקציות השימוש העיקרי בstatements_tryיבוצעו , במקום שההרצה תיפסק, במקרה כזה. תקרה תקלה שתפסיק את ביצוע הקוד

. statements_catchהפקודות האלטרנטיביות

Page 97: Matlab אובמ - Technion

Matlab-מבוא ל

97

while לולאת 9.4

מספר בלתי מוגבל של פעמים end- עד לwhile חוזרת על הפקודות הנמצאות בין פקודת whileלולאת ,whileהרישום הכללי של לולאת . true-עד שהתנאי הלוגי הופך ל

. statementsהעמידה בתנאי הלוגי מחושב כל פעם בסוף ביצוע הפקודות -כאשר אי התנאי מחושב פעם אחת לפני כניסה לתוך הלולאה ולכן רצוי להציב ערך while לב כי בלולאת נשים

.התחלתי כך שבפעם הראשונה התנאי הלוגי לא יתקיים כדי להיכנס לתוך הלולאה

,דוגמא ).לא כולל(הקוד הבא מסכם את איברי הוקטור עד לאיבר הראשון השלילי

אחרת יתכן מצב שבו הלולאה לעולם לא תיפסק , חשוב לשים לב כי תנאי העצירה יתקיים מתישהו .Ctrl+Break או Ctrl+Cי לחיצה על "עצירת הרצה לפני סיומה מבוצעת ע. בעצמה

Page 98: Matlab אובמ - Technion

Matlab-מבוא ל

98

for לולאות 9.5

,רתה הכלליתצו. מבצעות מקבץ פקודות מספר קבוע מראש פעמיםforלולאות

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

,דוגמא .x בוקטור numהקוד הבא מחפש כמה פעמים מופיע המספר

היא שפה הפועלת באופן מהיר ויעיל על Matlab. ככל האפשרfor להימנע מלולאות מאדמומלץ .שימוש בפונקציות סטנדרטיות הפועלות על מטריצות ישפר את מהירות הקוד בסדרי גודל. מטריצות ,ל באופן הבא"ניתן ליישם את כל הקוד הנ, לדוגמא

וקטור אינדקס9.5.1

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

. A(:,k)כלומר , Aית של מטריצה -k- וקטור האינדקס הוא העמודה הkהיא שבכל איטרציה , לדוגמא

,נתונה המטריצה1 5 9 13 172 6 10 14 18

A3 7 11 15 194 8 12 16 20

=

,הקוד

Page 99: Matlab אובמ - Technion

Matlab-מבוא ל

99

,Command Window-מייצר ב

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

הצבת איברים במטריצה באמצעות לולאות9.5.2

. מסמן אינדקסi לעתים רבות מציבים ערכים בתוך וקטורים ומטריצות כאשר for- וwhileבלולאות ,וש דרכים עיקריות להציב איברים במטריצה באמצעות לולאותקיימות של

הרחבה+ איתחול בסוגריים ריקות . 1

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

.for באמצעות לולאת absיישום פונקצית

. גדל באיבר אחדx_absבכל איטרציה

Page 100: Matlab אובמ - Technion

Matlab-מבוא ל

100

הצבה ישירה ללא אתחול כלשהו. 2

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

איתחול המטריצה לגודל ידוע מראש. 3

לכן ניתן לאתחל את . x צריך להיות זהה לאורך הוקטור המקורי x_absבדוגמא זו ברור כי אורך הוקטור x_absכוקטור אפסים ולעדכנו באופן הבא ,

?באיזו שיטה להשתמש

הסיבה . אם ידוע מראש גודל המשתנה אליו רוצים להכניס ערכים אז עדיף לאתחל אותו במטריצת אפסיםיודע מראש את גודל המשתנה הוא יודע כמה זיכרון הוא צריך להקצות לו Matlabלכך היא שכאשר

.ואינו צריך לעדכן את גודל המשתנה או את כמות הזיכרון שהוא מקצה לו

Page 101: Matlab אובמ - Technion

Matlab-מבוא ל

101

9.6 Continue

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

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

,דוגמא5]נתונה מטריצה 7]× Xהבאה ,

1 4 2 3 5 3 21 2 3 4 5 3 1

X 1 3 4 3 3 3 54 3 2 1 2 5 43 2 2 5 5 3 3

=

עם שני שכניו X- אשר איבריה הם ממוצע האיבר התואם בX_newואנו רוצים לחשב מטריצה חדשה ,הנוסחא לחישוב איברים אלה היא. מאותה שורה

X(i, j 1) X(i, j) X(i, j 1)X _ new(i, j)3

− + + +=

, יהיהX_newבמטריצה ) 3,3(-למשל האיבר ה

X(i, j 1) X(i, j) X(i, j 1) 3 4 3X _ new(i, j) 3.3333

3 3− + + + + +

= = =

Xלמשל כדי לחשב את . הבעיה היחידה היא באזור הקצוות _ new(4,1) המשוואה דורשת את האיבר

X(4,0)כדי לפתור בעיה זו נגדיר כי העמודה השמאלית ביותר והימנית ביותר של . שכמובן לא קייםל ולכן "ות אלו אין צורך לבצע את החישוב הנעבור עמוד. X יורכבו ישירות מעמודות X_newמטריצה

, כדי לדלג על ביצוע החישוביםcontinueנשתמש בפקודת

Page 102: Matlab אובמ - Technion

Matlab-מבוא ל

102

9.7 Break

מבוצעת breakאם פקודת . מפסיקה את הלולאה ויוצאת ממנהwhile או for בתוך לולאת breakפקודת אם . יוצאת מחוץ ללולאה הפנימית בלבדbreak-מתוך לולאה הנמצאת בתוך לולאה חיצונית אז פקודת ה

. אך לא בתוך לולאה אז ביצוע הקובץ נעצרm. מבוצעת בתוך קובץ breakפקודת

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

1 4 2 3 5 3 21 2 3 4 5 3 1

X 1 3 4 3 3 3 54 3 2 1 2 5 43 2 2 5 5 3 3

=

,כלומר המשוואה היא

X(i 1, j) X(i, j) X(i 1, j)X _ new(i, j)

3− + + +

=

בעוד שאנו רוצים לדלג על השורות ) j(כעת משוואת המיצוע ממוקמת בתוך לולאת שרצה על העמודות

, כדי לצאת מלולאת העמודותbreakלשם כך נשתמש בפקודת . הקיצוניות

Page 103: Matlab אובמ - Technion

Matlab-מבוא ל

103

m. יציאה מוקדמת מהרצת קבצי 9.8

אם Command Window- הנוכחי או לm. שקרא לקובץ m. מחזירה את ההרצה לקובץ returnפקודת . הנוכחי הורץ דרכוm.קובץ

היא ) כלומר לא רק יציאה לקובץ שקרא לקובץ הנוכחי( כליל m.דרך שימושית לצאת מהרצת קובץ

Command-פונקציה זו מקבלת כקלט מחרוזת שאותה היא מציגה ב. errorבאמצעות פונקצית Windowלאחר שהפסיקה את ההרצה .

, דוגמא0 חייב להיות בתחוםa אבל הערך b במשתנה aנדרש להציב את הערך a 10< חייבים , אחרת. >

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

הערות .שימוש נפוץ של פונקציה זו היא לבדיקת קלט שמקבלת פונקציה - Command- כדי לשלוח הודעות אזהרה לwarningכמו כן ניתן להשתמש בפונקצית -

Windowאך לא להפסיק את ביצוע הקוד .

Page 104: Matlab אובמ - Technion

Matlab-מבוא ל

כתיבת פונקציות. 10

,ירוט אפשרי של מבנה של פונקציה כלליתלהלן פ . שורה זו מגדירה את שם הפונקציה ואת משתני הקלט והפלט שלה–שורת הגדרה . 1 ).משמעות, גודל, סוג משתנה(תיאור הקלט והפלט , מטרת הפונקציה-הסברים . 2 . חלק זה מוודא כי הקלט הוא חוקי ותקין כדי שהפונקציה תתפקד כרצוי-בדיקת קלט . 3 . קביעת ערכים התחלתים למשתנים-אתחול . 4 . החלק המרכזי בו מבוצעים כל החישובים-חישוב . 5

, הן מהצורה הבאהMatlabהשורות הראשונות של פונקצית

ר

שם הפונקציה מילת מפתחמשתני הפלטמשתני הקלט

H1ורתש

104

ם ושhelpכלומר הקלדת . של הפונקציהhelp-הערות מיד לאחר שורת ההגדרה מרכיבות את ה עד לשורה הראשונה שאיננה H1 מציגות את ההערות משורת Command Window-הפונקציה ב

בתוCurrent Directoryהסבר זה מופיע בחלון . מהווה הסבר קצר לפונקציהH1שורת . 36הערהDescription ובנוסף פונקצית lookforכלומר . מחפשת אחר מילת מפתח בהסבר של כל פונקציה

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

.כולל שורה ריקה 36

שלhelp-ההפונקציה

Page 105: Matlab אובמ - Technion

Matlab-מבוא ל

105

, מניבהCommand Window- בlookfor Calculatesכתיבת

M

, מניבהCommand Window- בhelp poly_sineכתיבת

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

,למשל כתיבת

,מניבה את אותן התוצאות כמו

,עשה הרישוםלמ

, של הפונקציה37מבצע הצבת המשתנים בסוגריים למשתנים הלוקליים

. לכן ניתן גם להכניס ישירות את הערכים בתוך הסוגריים

,לדוגמא

.מניב את אותן התוצאות

.גדרים מחוץ לפונקציהנזכור כי ממשתנים לוקליים לא מו 37

Page 106: Matlab אובמ - Technion

Matlab-מבוא ל

106

nargin, nargout, nargchk פונקציות 10.1

) nargin) number of input arguments פונקצית 10.1.1

. מחזירה את מספר המשתנים בקלט של פונקציהnarginפונקצית , באופן הבאpoly_sineקריאה לפונקציה , לדוגמא

nargin 4←

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

.והסבר , משתנים בקלט5לדוגמא הצבת

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

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

, ארגומנטים בקלט3-1 אנו למדים כי ניתן להריצה עם diff של פונקצית help-לדוגמא מה

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

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

)nargout) number of output arguments פונקצית 10.1.2

.בפלט של הפונקציה מחזירה את מספר המשתנים nargoutפונקצית , באופן הבאpoly_sineקריאה לפונקציה , לדוגמא

nargout 3←

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

Page 107: Matlab אובמ - Technion

Matlab-מבוא ל

107

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

). p-התקבל מקודם ב( יוצב ערך הפולינום wובמשתנה

. משתמש כלל לא ביקשאך גישה זו היא בזבזנית מאחר ומושקעים משאבים לחישוב ערכי משתני פלט שהקיימים שני מקרים בהם חשוב , יחסוך רק שורת קוד אחת אך באופן כלליnargout-בדוגמא זו שימוש ב

,nargout-להשתמש ב .חישוב חלק ממשתני הפלט תובעני מבחינת עומס חישוב .1 .אך מספר הקריאות לפונקציה גדול מאד, החישוב לא תובעני .2

,לסיכום

כדי לוודא שמספר המשתנים בקלט תקין ולבחור בין אפשריות ערכי nargin משתמשים בפונקצית כ"בד כדי לחסוך בחישוב משתנים שהמשתמש לא ביקש nargoutכ משתמשים בפונקצית "בד. ברירות מחדל

.אותם , בהתאםpoly_sineנשנה את פונקצית

Page 108: Matlab אובמ - Technion

Matlab-מבוא ל

108

הערה

if, else- לביצוע חישובים בצורה סלקטיבית היא שימוש בswitchיבית לשימוש בפונקצית דרך אלטרנט . ליציאה מוקדמת מהפונקציהreturnיחד עם ,לדוגמא

nargchk פונקצית 10.1.3

פונקציה זו בודקת אם מספר הארגומנטים בקלט נע . nargchk היא פונקצית narginעל וריאציה חביבה ,רישומה הכללי. high לערך lowבין ערך

.warning או error ומחזירים את ההודעה לפונקצית nargin- מקבלים מפונקצית הnumberאת המספר

,לדוגמא נתונה הפונקציה

,נרשום. 4- ל2נקבע כי מספר המשתנים התקין בקלט שלה הוא בין

, משתנים בקלט נקבל את הודעת השגיאה5נכניס , למשל, אם

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

.nargin במקום nargoutי הצבת "ניתן גם להשתמש בפונקציה זו גם לבדיקת מספר המשתנים בפלט ע ,לדוגמא הוספת

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

Page 109: Matlab אובמ - Technion

Matlab-מבוא ל

109

פונקציות של פונקציות10.2

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

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

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

.מסוגים בלתי ידועים מראש

fevalס שמן באמצעות פונקצית " ביצוע פונקציות ע10.2.1

. @ באמצעות סימן Matlab- שמוגדר ב38function handle משתמשת במושג fevalפונקצית function handleפונקצית . הוא מבנה מידע המכיל מידע לגבי הפונקציהfevalמשתמשת ב -function

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

,להלן מבחר קטן מתוכן. fevalקיימות מספר פונקציות סטנדרטיות המשתמשות בפונקצית fzero - מוצאת פתרונות למשוואה f (x) 0=.

fminbnd -מוצאת נקודת מינימום לוקלית של f (x)באינטרוול מוגדר . fsolve -פותרת מערכת משוואות לא לינאריות באופן נומרי . ode45 - פותרת מערכת משוואות דיפרנצאליות רגילות באופן נומרי. quadl -טגרציה על מבצעת אינf (x)באופן נומרי .

inlineאובייקט

.inlineצורה מקוצרת ליצירת פונקציה היא באמצעות אובייקט המחשבת שורת קוד יחידה ומחזירה Matlab מקבלת מחרוזות ומייצרת פונקצית inlineפונקצית שאר הארגומנטים מייצגים את . הארגומנט הראשון מייצג את שורת הקוד שתבוצע. ט פלט יחידארגומנ

סורקת את inlineפונקצית . המשתנים והם מתפקדים כמו משתני קלט ברישום של פונקציה סטנדרטית...) ,*,+,sinכמו (המחרוזת בארגומנט הקלט הראשון שלה ומחפשת אחר אופרטורים ופונקציות מוכרות

. ואחר המשתנים שהוגדרו

,לדוגמא שני הרישומים הבאים יוצרים פונקציות המתפקדות באופן זהה רישום סטנדרטי של פונקציה. 1

inlineאובייקט . 2

help- אך מסיבות המפורטות בfunction handle- ניתן גם לכתוב את שם הפונקציה בתור מחרוזת במקום להשתמש ב 38

.function handle-עדיף להשתמש ב

c

Page 110: Matlab אובמ - Technion

Matlab-מבוא ל

110

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

הוא בכך שרישום זה מהיר יותר עבור כתיבת פונקציות בעלות חישוב בודד כמו inlineהיתרון באובייקט

. נפרדm.נוסחה ואין צורך להגדיר פונקציה בקובץ או להשתמש באובייקט , החסרון ברישום זה הוא שאי אפשר לכתוב פונקציה בעלת יותר מפקודה אחת

inlineאו להחזיר בפלט יותר ממשתנה אחד, אחר.

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

cos( x)ef (x) , x [0,5]x 1

π

= ∈+

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

,באופן אנליטי צריך להשוות את הנגזרת לאפס ולפתור את המשוואה הבאה

[ ]( )

cos( x)

2

e (x 1)sin( x) 1f (x) 0

x 1

π− π + π +′ = =

+

fminbndפתירת משוואה זו קשה מאד ולכן נחפש אחר נקודת המינימום באופן נומרי באמצעות פונקצית

,הקוד.

.10.1מניב את גרף

, יכול להיותfevalמנט הראשון של פונקצית הארגו, לסיכום1. function handle) הוגדרה פונקציה בקובץ.mנפרד .( ). נפרדm.הוגדרה פונקציה בקובץ (מחרוזת .2 . וללא גרשייםinlineאובייקט .3

הערה ,למשל. סוגריים שלה המבצעת כל מחרוזת הנמצאת בevalקיימת פונקציה בשם -

.clearמבצעת את הפקודה

Page 111: Matlab אובמ - Technion

Matlab-מבוא ל

111

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50.5

1

1.5

2

2.5

3f(x)=ecos(πx)/(x+1)

x

y

ecos(πx)/(x+1)xmin

מצאה נקודת מינימום לוקליתfminbndפונקצית : 10.1גרף

Page 112: Matlab אובמ - Technion

Matlab-מבוא ל

112

הגדרת פונקציות המקבלות מספר בלתי מוגדר מראש של משתנים10.2.2

הדוגמא הכי . דר מראש של משתניםישנן פונקציות החייבות להיות מסוגלות לקלוט מספר בלתי מוגאפשרות זו . 39 היכולה לקבל מספר כלשהו של גרפים לשרטוטplotפשוטה של פונקציה כזו היא פונקצית

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

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

4 3 2

f (x) Asin( x )f (x) ax bx cx dx e

= ω + φ

= + + + +

,x,A: פרמטרים של קלט4לפונקצית הסינוס ישנם ,ω φ ,x,a: פרמטרים של קלט6ל ישנם "לפונקצית הפולינום הנ b,c,d,e

,פונקציות אלו מקודדות באופן הבא

, עבור פונקצית הסינוס נרשוםfeval-כדי להשתמש ב

,ומתבצעת ההצבה הבאה

arg1 x arg3 warg 2 A arg 4 phi

← ←← ←

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

,ומתבצעת ההצבה הבאה

arg1 x arg3 b arg5 darg 2 a arg 4 c arg 6 e

← ← ←← ← ←

feval-כדי להשתמש ב. 40 ארגומנטים בדיוק4 עם פונקצית הסינוס חייבים feval-כלומר כדי להשתמש ב

פונקצית לכן בגישה זו אין כל ברירה אלא לכתוב. ארגומנטים בדיוק6עם פונקצית הפולינום חייבים feval אך נזכור כי מטרת השימוש בפונקצית . לכל מקרהשונהfevalהיא פונקציה כללית .

,קיימות שתי גישות לפתרון בעיה זו

vararginפונקצית .1 structureשימוש במערך .2

.varagin- ולכן איננה משתמשת בC-למעשה פונקציה זו כתובה ב39

.Function Handleלא כולל 40

Page 113: Matlab אובמ - Technion

Matlab-מבוא ל

113

vararginפונקצית

, הואvararginאופן השימוש בפונקצית

כל הארגומנטים של הקלט עד . vararginהקלט מורכב ממספר ארגומנטים והארגומנט האחרון הוא vararginכל ארגומנט קלט מהמיקום של . הם ארגומנטי קלט רגיליםvararginלארגומנט במיקום של

. vararginמערך תאים בשם והלאה מוצב בתוך ,דוגמא

,נתונה פונקציה המוגדרת באופן הבא

,ל באופן הבא"קריאה לפונקציה הנ

, בעל הערכיםvarargin ומייצרת מערך תאים בשם 2 ערך xמציבה במשתנה

.vararginארגומנטים החל מהארגומנט השני הוצבו במערך התאים בשם כלומר כל האך כיצד משתמשים במערך . באופן הזה ניתן להגדיר פונקציה המקבלת מספר כלשהו של ארגומנטי קלט

? בתוך הפונקציהvararginהתאים ולהציבם varargin - אז ניתן לחלצם מvararginאם ידועים סוגי מבני המידע שיהיו במערך התאים

.לתוך משתנים מתאימים

,לדוגמא מוגדרת הפונקציה

Page 114: Matlab אובמ - Technion

Matlab-מבוא ל

114

,כלומר. הממירה סקלרים לתוך וקטור שורה

[ ]x 1 2 3 4 5⇐

הוא וקטור שיקלוט את xתן היה להגדיר כי יוצבו סקלרים ולכן ניvarargin-ל היה ידוע כי ב"במקרה הנאינם ידועים varargin -אך מה קורה כאשר סוגי מבני המידע שיוצבו ב. vararginהסקלרים מתאי

? מראש, הצריכה לחלץ את המשתנים מסוגים שונים מתוך מערך התאיםfevalהמקרה הכי בולט הוא פונקצית

. כפי שיודגם בדוגמת הסיכום{:}ן לבעיה זו הוא האופרטור היחודי הפתרו. ולתוך הסוגריים שלה

נבחן את הפונקציה הבאה המחשבת feval, varargin, function handlesכדוגמת סיכום של פונקציות ,m. לשם נכתבו שלושה קבצי. את האפסים של פונקציה כללית ונדגים עבור פונקצית סינוס

.scriptקובץ .1 .פונקצית הסינוס .2 .find_zeros_vararginפונקצית .3

1 .

2 .

הארגומנטים בקלט שלהפונקציה שיוצבו במערך

vararginהתאים

Page 115: Matlab אובמ - Technion

Matlab-מבוא ל

115

3.

Page 116: Matlab אובמ - Technion

Matlab-מבוא ל

. מתקבל10.2גרף

0 2 4 6 8 10 12 14 16 18 20-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x

y

fפונקצית הסינוס : 10.2גרף (x) sin x4 3π π = +

0 בתחום x 20≤ ≤

, מוצגות התוצאות הבאותCommand Window-ב

,כלומר. שקול להצבת מערך התאים איבר איבר בתוך הסוגריים של פונקציה{:}vararginהטריק

c

116

.varargout בשם .varargout -ו, vararginפונקציות

K

הערות

קיימת פונקציה משלימה עבור משתני הפלט -שתמשות ב סטנדרטיות מMatlabפונקציות -

Page 117: Matlab אובמ - Technion

Matlab-מבוא ל

117

structureשימוש במערך

בקלט cell array היא הצבת משתנים מסוגים שונים בתוך vararginמשמעות השימוש בפונקצית . structureגישה אלטרנטיבית היא הצבה במערך . הוחילוצם מתוך מערך התאים לשימוש בתוך הפונקצי

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

,להלן פירוט הקוד המשוכתב. structureשימוש במערך , הם המשוכתביםm.שלושה קבצי

.scriptקובץ .1 .פונקצית הסינוס .2 .find_zerosפונקצית .3

1.

2 .

Page 118: Matlab אובמ - Technion

Matlab-מבוא ל

118

3.

Page 119: Matlab אובמ - Technion

Matlab-מבוא ל

119

,השינויים בקבצים הם script-קוד ה. 1

הוגדר מערך בשם . בערכים מתאימיםstructure- איתחול מערך הfind_zerosלפני קריאה לפונקציה paramsהמכיל את הפרמטרים של כל פונקציה ,

פונקצית הסינוס. 2

,ל" הנstructure- מתוך מערך ה41חילוץ המשתנים

find_zerosפונקצית . 3

. מאחר ומספר הארגומנטים של הקלט ידוע מראשfeval-שימוש רגיל ב

.vararginמתקבל אותו גרף ותוצאות כמו באמצעות פונקצית

סיכום פרק פונקציות של פונקציות

,פונקציה של פונקציות צריכה להיכתב כך שבאמצעות קוד כללי feval) + function handleס שם הפונקציה באמצעות "ת אחרות עמבוצעות פונקציו .1

). inlineאו מחרוזת או אובייקט מבוצעות פונקציות אחרות בעלות מספר בלתי ידוע מראש של ארגומנטים בקלט .2

.structure או מערך vararginמסוגים בלתי ידועים מראש באמצעות פונקצית

באופן ישיר structure- איננו הכרחי וניתן להציב את ערכי המשתנים מהstructure-שלב חילוץ המשתנים מתוך מערך ה 41

.עם ציון נקודה ושם השדה

Page 120: Matlab אובמ - Technion

Matlab-מבוא ל

120

משתנים גלובליים10.3

כלומר מוגדרים רק בתוך אותה פונקציה ולא בפונקציות שקראו לה , משתנים בתוך פונקציה הם לוקלייםנקציה וניתן לשנות את ערכו בכל לעומת זאת משתנה גלובלי מוגדר בכל פו. Command Window-או ב

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

כמשתנה , Command Window- או בscriptכ בקובץ "בד, לפני שימוש במשתנה גלובלי צריך להגדירו

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

קביעת גדלים קבועים שאין ברצוננו לשנות ואין, למשל. ישנם מספר שימושים למשתנים גלובליים

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

, נרשוםscriptבקובץ

,ונגדיר פונקציה

נשים לב כי בפונקציה צריך לקרוא . 1- גדל בNUM_CALLל המונה "כל פעם שנקרא לפונקציה הנב

.למשתנה הגלובלי לפני שמשתמשים בו do_nothingאם לא היינו משתמשים במשתנה גלובלי במקרה זה היינו צריכים להכניס בקלט פונקצית

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

,ימוש במשתנים גלובליים משתי סיבותדרך זו פחות טובה מש .כדי ליישמה צריך לשנות את אופן הקריאה לפונקציה .1אם הפונקציה שלה אנו רוצים לספור את מספר הקריאות היא פונקציה שפונקציות .2

אז צריך לשנות גם את הפלט והקלט של כל הפונקציות הקוראות , אחרות קוראות לה .לה

הערה אך לא Workspace- עם משתנה גלובלי מוחק אותו רק מהclearשימוש פשוט בפונקצית -

, נרשוםNUM_CALLכדי למחוק משתנה גלובלי כמו. מהזיכרון

Page 121: Matlab אובמ - Technion

Matlab-מבוא ל

121

תת פונקציות10.4

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

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

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

newstatsהפונקציה המרכזית היא . מחשבת את הממוצע והמדיאן של וקטורnewstatsהפונקציה . mean, medianוהוגדרו שתי תת פונקציות שלה בשם

ר כך פונקציות אח, מחפש תחילה אחר תת פונקציות בעלות אותו שםMatlab, בעת קריאה לפונקציהל כאשר הגדרנו תת פונקציה "לכן בדוגמא הנ. search path- ולבסוף פונקציות סטנדרטיות ב42פרטיותmean הפונקציה המרכזית newstats תשתמש בתת הפונקציה במקום בפונקציה הסטנדרטית בעלת אותו .שם

.private functions אחר הנושא help-להסבר לגבי פונקציות פרטיות חפשו ב 42

Page 122: Matlab אובמ - Technion

Matlab-מבוא ל

122

toolbox יצירת 10.5

בחלון הראשי . ילה ליצור תיקיה המכילה את כל הפונקציות הרצויות צריך תחtoolboxכדי ליצור בחלון זה מוצגים כל . 10.3 יופיע בדומה לגרף Set Path וחלון ...Set Path לחצו על Fileבתפריט

החדשה שלכם בחרו toolbox-כדי להוסיף את תיקיית ה. מחפש אחר פונקציותMatlabהתיקיות שבהן . ובחרו את התיקייה הרצויה…Add Folderציית באופ

ים-toolbox-חלון הגדרת ה: 10.3גרף

למשל כדי להשתמש בפונקצית . מכל נתיבtoolbox- מאפשרת גישה לפונקציות בtoolboxיצירת mean הסטנדרטית אין צורך לגשת לתיקיה בה מוגדרת פונקצית mean .כ שמים ב"בד-toolbox

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

Page 123: Matlab אובמ - Technion

Matlab-מבוא ל

123

)Debugging(מציאת ותיקון שגיאות . 11

,קיימים שני סוגים של שגיאות . 'כתיבת שם עם אות גדולה במקום אות קטנה וכו, למשל שכיחת סוגר- syntaxשגיאות .1

ניתן . שגיאות כתיב ללא הרצת כל התוכנה כדי לחסוך את זמן ההרצהלעיתים רבות רצוי לבדוק .m- ושם קובץ הpcodeלעשות זאת באמצעות כתיבת

.למשל כתוצאה מחישובים מתקבלים ערכים לא חוקיים). runtime(שגיאות הרצה .2

הן שגיאות runtimeלעומת זאת שגיאות . למצוא ולתקן) יחסית( הן שגיאות שקל syntaxשגיאות - ההרצה מופסקת וכל המשתנים הלוקליים בruntimeכאשר מתקבלות שגיאות , בנוסף. חמקמקות יותרWorkspaceלכן ניתן להשתמש באופציית ה. נמחקים וכך קשה מאד לנתח את סיבת הבעיה-Debuggingשתנים הלוקליים כדי לבצע את הרצת הקוד שורה שורה תוך כדי נגישות למ.

נציג גרסה שגויה של פונקצית מציאת האפסים שהוצגה בפרק Debugging-כדי להמחיש את תהליך ה או כאשר בחלון Command Window-י הקלדת שם הקובץ ב"הרצת קבצים מבוצעת ע .10

Editor/Debugger5מנת לוחצים על הפונקציה הרצויה מסוF או על כפתור Run) .(

,script-קובץ ה

Page 124: Matlab אובמ - Technion

Matlab-מבוא ל

124

,הפונקציה

Page 125: Matlab אובמ - Technion

Matlab-מבוא ל

125

, מניבה את התוצאה הבאהscript-למראית עין הקוד נראה תקין אך הרצת קובץ ה

. התקבלה הודעת שגיאה

טריקניתן להגיע ישירות . Command Window-ע אדום במופיעה הודאת שגיאה בצב, אם נוצרת שגיאה

בהודעת 43י השמת סמן העכבר על מיקום השגיאה המסומן עם קו תחתון"לשורת השגיאה בקובץ הנכון ע .השגיאה ולחיצה על הכפתור השמאלי של העכבר

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

. find_zero_wrong ולא find_zeros_wrong ששם הפונקציה היא ההטעות במקרה זה היית. השגיאהכדי לעצור את הרצה נלחץ . והתוכנית לא תסיים בזמן סבירscript-לאחר תיקון הטעות נריץ את קובץ ה

.Command Window בחלון Ctrl+Break או Ctrl+Cעל או אפילו באיזה , קשה מאד מהסתכלות בקוד בלבד לראות מהי הבעיה, הקודםsyntax-לעומת באג ה . קובץ הבעיה

ים נש. שבהן הרצת הפונקציה תיפסק) breakpoints(השלב הראשון בדיבוג הוא קביעת נקודות עצירה ומימינה קיימת , השמאלית ביותר מציגה את מספר השורה. לב כי משמאל לקוד קיימות שתי עמודותל "לחיצה על הכפתור השמאלי של העכבר על הקווים הנ. -עמודה שבחלק משורותיה מופיעים קווים

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

,5נציב נקודת עצירה בשורה

,5 וכעת ההרצה תיעצר בשורה script-נריץ שוב את קובץ ה

.Debug הוא במצב של Matlab כדי לציין כי <<K כעת מופיע הסימן Workspace-בחלון ה

כדי לבצע את . י כעת ההרצה נמצאת בשורה הנוכחית אך לא ביצעה אותה עדייןהחץ הירוק המלא מציין כ . Stepהשורה המסומנת ולעבור לשורה הבאה נלחץ על כפתור

כעת Workspace-ב. 6 ומקדמת את החץ הירוק המלא לשורה 5 מבצעת את שורה Stepלחיצה על . x_rangeתנה מופיע המשנציב . ל שורה שורה" רק מבוצעת הגדרת משתנים ולכן מיותר לעבור על כל השורות הנ10עד לשורה

כפתור זה מבצע את כל השורות עד . Continue 45 ונלחץ על כפתור10נקודת עצירה בשורה .עצירהלנקודת העצירה הבאה או עד סיום כל ההרצה במקרה ואין עוד נקודת

.נשים לב כי כעת ניתן לבחון ואף לשנות את ערכם של כל המשתנים שהוגדרו ולוודא שהם תקיניםי הזזת העכבר " או עArray Editorבאמצעות חלון , Command Window-ניתן לבחון את המשתנים ב

המציינים מידע לגבי data tips וכך יצוצו חלונות הנקראים Editor/Debuggerעל המשתנים בחלון . המשתנה

. באינטרנטhyperlink-צורת הרישום הזו דומה ל 43 .לחיצה על העיגול האדום מורידה את נקודת העצירה 44

.Continue הופך לכפתור Run כפתור Debugנשים לב כי במצב 45

Page 126: Matlab אובמ - Technion

Matlab-מבוא ל

126

,לדוגמא

עד עתה לא נצפו דברים בלתי צפויים ולכן רוב הסיכויים שהבעיה נמצאת בתוך פונקצית find_zeros_wrong . לחיצה על כפתורStepל ולכן "אפשר לנו לבחון את תוכן הפונקציה הנ לא ת

. כפתור זה נכנס לתוך פונקציה פנימית בשורה של החץ הירוק המלא . Step inנשתמש בכפתור Step inלפני לחיצה על כפתור . מציין בתוך איזה פונקציה ההרצה נמצאת כרגעStackנשים לב כי חלון

, הציגStackחלון

וחלון find_zeros_wrong של פונקצית 46 נעבור לשורה הראשונהStep inלאחר לחיצה על כפתור Stackנשים לב כי בחלון של קובץ . מציין זאתfind_zeros_script_wrongהחץ הפך לריק ,

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

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

. שקרא לפונקציהscript- ואינם מוגדרים בקובץ הfind_zerosשל פונקצית ואכן שני המשתנים stack ניתן להשתמש בחלון script-כדי לבחון את הערכים המוגדרים בקובץ ה

,func, paramsנשים לב כי שלושת המשתנים . script- לא מוגדרים בקובץ הdx, tolהחדשים x_range מוגדרים בשני הקבצים אך בפונקציה find_zeros_wrongל הם משתנים " המשתנים הנ ולכן שינויים בתוך הפונקציה לא ישנו script-כלומר הם רק העתקים של המשתנים בקובץ ה. לוקליים

.script-את ערכם בקובץ הכדי לחסוך בזמן נציב . מעבר על הפקודות עד למציאת האפס הראשון אינן מעלות בעיות הנראות לעין

נשאר על ערך xנשים לב כי כעת ערך ). 40נוריד את נקודת העצירה בשורה (53נקודת עצירה בשורה י פתיחת המשתנה "ניתן להבחין בה ע. קיימת התקדמות אך היא קטנה מאד, למעשה. ולכן אין התקדמות2x בחלון Array Editor ובחירת יצוג longG .

כי כעת הוא קטן 0.01 צריך להחזירו לערכו המקורי dxלאחר שצומצם ערך הקידום הסיבה לבאג היא שדרך פשוטה לפתור את הבעיה היא להגדיר את . כמעט ואינו מתקדם בכל איטרציהx ולכן ערך −610-מ

. כאשר נמצא אפסdx- ולהציבו בdx_original- כdxהערך המקורי של . Exit Debug Modeי לחיצה על כפתור " עDebug Mode-שינויים צריך לצאת מכדי לבצע את ה

. Clear all breakpointsכדי להוריד את כל נקודות העצירה נלחץ על כפתור ,שני השינויים הם

M

M

M

.השורה הראשונה לא כולל שורות ריקות או הערות 46

Page 127: Matlab אובמ - Technion

Matlab-מבוא ל

127

. מחדשscript-נשים לב כי עלינו לשמור את השינויים שביצענו בפונקציה לפני שנריץ את קובץ ה x וכעת האלגוריתם מקדם את 2 ולאחר הרצה נמצא שהאפס הראשון הוא 54נוסיף נקודת עצירה בשורה

Step out הרצת הפונקציה נוריד את נקודת העצירה ונלחץ על כפתור כדי לסיים את. באופן הרצויכדי לסיים את הרצת . Step inשתפקידו הוא לסיים הרצת הפונקציה הפנימית שנכנסנו אליה דרך כפתור

. והתוצאות המתאימות10.2 ואז יתקבל גרף Continueהפונקציה כולה נלחץ על כפתור

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

find_zeros_wrongבקובץ ה -script נכניס גם את ערכי ברירת המחדל של dxו -tol,

,מתקבלת השגיאה

אך לא ברור מדוע נוצרה script- של קובץ ה10לחיצה על מיקום השגיאה מביא את הסמן לשורה לכן אופציה מאד שימושית היא להריץ את התוכנה עד לשורה שבה מתבצעת השגיאה ללא . השגיאהכך נוכל לראות בדיוק איפה התבצעה השגיאה ואת כל ערכי המשתנים רגע לפני שמתחוללת . ביצועה .השגיאה , באופן הבאStop if Error נלחץ על אפשרות Breakpointsבתפריט

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

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

,switchי הוספת אופציה נוספת לפונקצית "פתרון הבעיה הוא ע. קלט תקין

Page 128: Matlab אובמ - Technion

Matlab-מבוא ל

128

.כעת הקוד מתפקד באופן תקין

Page 129: Matlab אובמ - Technion

Matlab-מבוא ל

129

Matlab- שיפור ביצועים ב12

,Matlabקיימות מספר דרכים לשפר את הביצועים של קוד למעשה קשה להחליף . ככל הניתןwhile- וforבפונקציות מטריציות במקום לולאות שימוש .1

for בפעולות מטריציות ולעומת זאת במקרים רבים ניתן להחליף לולאות whileלולאות .בפעולות מטריציות

ננו מאותחל אז הסיבה לכך היא שכאשר משתנה אי. עדיף לאתחל משתנים שגודלם ידוע מראש .2Matlabעבור מערך נומרי . צריך לבזבז משאבים בשינוי גודלו ושינוי הקצאת הזיכרון בשבילו

בפונקציה structure ועבור מערך cellעבור מערך תאים בפונקצית , zerosנשתמש בפונקצית struct.

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

,הערה ,כמות הזיכרון והמשאבים הדרושים לחישוב שני המקרים הבאים הוא זהה

1.

2.

12.1 Profiler

היא מציאת Profiler -מטרת ה. מנה היא שיטה למדידת היכן התוכנה מבלה את זProfiling-שיטת המראה איזה פונקציות גוזלות Profiler -ה. צווארי הבקבוק של תוכנות כדי לאפשר ביצועים מהירים יותר

. את זמן ההרצה והמשתמש יכול לנסות למצוא דרכים לעקוף פונקציות אלותובות בצורה יעילה יתכן והן קוראות כ יש מספר שכבות ולכן תוכנות שהן על פניהן כ"לקוד בד

.לפונקציות בשכבה יותר נמוכה שמבזבזות משאביםלהלן גרף התוצאות של הרצת , למען המחשה. doc profileכדי ללמוד יותר על הכלי השימושי הזה כתבו

.התוכנה למציאת אפסים ,הקוד

.12.1מניב את החלון בגרף

הערה

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

ticו -toc.

Page 130: Matlab אובמ - Technion

Matlab-מבוא ל

130

profilerחלון : 12.1גרף

Page 131: Matlab אובמ - Technion

Matlab-מבוא ל

131

פעולות גרפיות מתקדמות. 13

יצירת סרטים13.1

לשם כך . חים להמחיש דינמיקה של תהליכיםממדיים אינם מצלי-ממדיים ותלת-במקרים רבים גרפים דו . י הרצת הגרפים אחד אחר השני בצורה חלקה"ניתן לייצר סרטים מגרפים ע

,Matlab-קיימות שתי דרכים ליצירת סרטים בשיטה זו יעילה כאשר . on-lineאובייקטים בגרף משורטטים ונמחקים : Erase Modeאופציית .1

. הפריימים הוא קטןהשינויים בין שיטה זו יוצרת סרטים .off-lineיצירת מספר גרפים ושמירתם יחד כסרט movie: פונקצית .2

. יותר חלקים ולכן נתמקד בה

לתוך getframeשימרו אותו באמצעות פונקצית , יצרו גרף: פשוט ביותרmovieהרעיון של פונקצית . movieוהציגו את הסרט באמצעות פונקצית , structureוג משתנה סרט מס

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

,script-קובץ ה

,הפונקציה

Page 132: Matlab אובמ - Technion

Matlab-מבוא ל

132

Page 133: Matlab אובמ - Technion

Matlab-מבוא ל

133

M הוא מערך structureבמהלך כל איטרציה של לולאת . המכיל את כל הפריימים של הסרטwhile לאחר . getframe באמצעות פונקצית M-הגרף מוצב ב, בסיום כל איטרציה של הלולאה. משורטט גרף

Matlab- ממיר את סרט הscript-קובץ ה. script- לקובץ הMהיא מחזירה את , סיום הרצת הפונקציהM לפורמט aviמחוץ לה הניתן לצפיי -Matlab .בנוסף הקוד,

. 47 פעם אחתMמריץ את הסרט

0 2 4 6 8 10 12 14 16 18 20-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x

y

הפריים האחרון של הסרט: 13.1גרף

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

Page 134: Matlab אובמ - Technion

Matlab-מבוא ל

134

13.2 GUI (Graphical User Interface)

להיכרות יותר מעמיקה קראו את . אפשריות יצירת ממשק גרפיפרק זה סוקר רק בקצרה אתbuildgui.pdfשעל פיו נכתב פרק זה .

תכנון ממשק גרפי מבוצע באמצעות . ים-toolbox- ממשקים גרפיים במרבית הMatlab-קיימים ב .13.2 המתואר בגרף 48 הפותחת את חלון תכנון ממשק הגרפיguideפונקצית

)Layout Editor(חלון תכנון ממשק גרפי : 13.2גרף

, מתחלק לשלושה שלביםGUIתהליך יצירת . מומלץ לתכנן מראש כיצד הממשק הגרפי יראה-GUI-תכנון ה .1 . Layout Editor- יצירת המעטה החיצוני של הממשק הגרפי באמצעות ה-GUIיצירת גרף .2 שדרכו ניתן לתכנן את התפקוד של m. מיוצר קובץ GUI- בעת שמירת גרף ה-GUI-תכנון ה .3

). גרפים, תפריטים, כפתורים(כל אובייקט

, באמצעות דוגמאGUIבפרק זה נמחיש את העקרונות הבסיסיים של יצירת באמצעות הפונקציות ליצירת גרפים peaks, membrane, sincממדיות -שרטוט הפונקציות התלתsurf, mesh, contour . הוא תרשים סכמתי של ממשק הגרפיקה הרצוי13.3גרף .

. Show names in component palette באפשרות Preferences- לבחור בFileכדי לקבל חלון זה צריך בתפריט 48

Page 135: Matlab אובמ - Technion

Matlab-מבוא ל

135

שרטוט סכמתי של הממשק הרצוי: 13.3גרף

ניתן Component Palette-מה. 13.2 פותחת את החלון בגרף Command Window- בguideהרצת . שהוא יהווה את חלון הממשק הגרפי "Layout Area"- כ13.2להציב אובייקטים בשטח המסומן בגרף

קביעת גודל החלון13.2.1

,ביעת גודל החלוןקיימות שתי אפשריות לק .Layout Area- לחיצה וגרירה על הריבוע השחור בפינה הימנית תחתונה של ה-ידנית. 12 .Property Inspector- לחיצה על כפתור Property Inspector 13.4 פותחת את החלון בגרף .

Property Inspectorחלון : 13.4גרף

Page 136: Matlab אובמ - Technion

Matlab-מבוא ל

136

ניתן לשנות את רוחב החלון . ניתן לשנות את התכונות של כל אובייקטProperty Inspectorבחלון דות הרצויות כדי לקבוע את היחי. position בתכונת height- וwidthי שינוי תת תכונות "עצמו ע

.Unitsבוחרים בתכונת

ניתן לקבוע תכונות של ) Handle Graphics אובייקטים של 7.2כפי שהוזכר בפרק (נשים לב כי הוא ממשק גרפי Property Inspectorחלון , למעשה. get- וsetאובייקט גרפיקה באמצעות פונקציות

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

הוספת רכיבים13.2.2

Layout- וגרירתו למיקום הרצוי בComponent Palette -י בחירת רכיב מה"הוספת רכיבים מבוצעת עArea .בדוגמא שלנו נציב ב- Layout Area שלושה כפתורי לחיצה )push buttons( ,טקסט סטטי ,

. ומערכת צירים אחת,)popup menu(תפריט נפתח .13.5התוצאה מוצגת בגרף

נוכחיGUI: 13.5גרף

יישור אובייקטים13.2.3

הפותח חלון Align Objectsי בחירת קבוצת האובייקטים ולחיצה על כפתור " אובייקטים מבוצע עיישורAlign Objects ניתן לקבוע את המרווח . בחלון זה ניתן לשלוט ביישור אנכי ואופקי. 13.6 כמו בגרף

).מרכז או ללא יישור, שמאל, לימין(האופקי והאנכי בין כל אובייקט וגם את סוג היישור . פיקסלים והיישור הרוחבי יהיה לשמאל20- קבענו כי המרווח האנכי מורכב מ13.6בגרף , לדוגמא

Page 137: Matlab אובמ - Technion

Matlab-מבוא ל

137

Align Objectsחלון : 13.6גרף

קביעת תכונות של אובייקטים13.2.4

כדי , למשל. Property Inspector-ל הכפתור הימני של העכבר ובוחרים בלוחצים ע, בוחרים באובייקט Propertyל ויפתח חלון"נבצע את הפעולות הנ, העליון ביותרPush Button-לשנות את התכונות של ה

Inspector 13.7 כפי שמוצג בגרף.

העליוןPush Button- של הProperty Inspectorחלון : 13.7גרף

סוג יישור אנכי

סוג ריווח אנכי

סוג יישור אופקיאופקי סוג ריווח

מספר פיקסלים

במרווח אנכי

מספר פיקסלים

במרווח אופקי

Page 138: Matlab אובמ - Technion

Matlab-מבוא ל

138

- נשנה את השם לStringבתכונה . Surf- אנו רוצים לשנות את שם הכפתור ל13.3לפי הסכמה בגרף Surf במקום Push Button .כפתורי נשנה את שני 49באותו אופןPush Button הנותרים ואת הטקסט

. 13.3הסטטי בהתאם לסכמה בגרף מסומן בחץ בגרף (Stringנלחץ על הלחצן ליד תכונת ) Popup Menu(תפריט נפתח כדי לקבוע את ה

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

העליוןPush Button- של הProperty Inspectorחלון : 13.8גרף

שבו נתכנן את התפקוד , לקראת השלב הבא. המציינת אותו) Tag( קיימת תווית GUI-לכל אובייקט ב .ות לזיהוירצוי לקבוע תווית קל, של כל אובייקט

- והpushbutton1- נקבעת באופן אוטומטי כSurfהתווית של אובייקט כפתור הלחיצה , למשלCallback הוא .<automatic>מיוצר קובץ , לאחר שמירת הגרף.m שקורא לאובייקטים בחלון GUI

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

אובייקט תווית ברירת מחדל תווית חדשה

surf_ pushbutton pushbutton1 Surf (Push Button) mesh_ pushbutton pushbutton2 Mesh (Push Button) contour_ pushbutton pushbutton3 Contour (Push Button) data_popup popupmenu1 Popup menu

13.1טבלה

- לnameנסמן את כל הגרף ונשנה את תכונת . GUI-תכונה נוספת שרצוי לשנות היא השם של ה

simple_gui.

בשמירה הראשונה נוצר גם קובץ . Activate Figure בפעולה נלחץ על כפתור GUI-ראות את הכדי ל.mהקובע את התפקוד של כל אובייקט .

.נשים לב כי כדי שהשינוי ישמר יש להוריד את הסימון מהתכונה האחרונה ששונתה 49

Page 139: Matlab אובמ - Technion

Matlab-מבוא ל

M

אתחול

תת פונקציות הקובעות את תפקוד

האובייקטיםGUI-של ה

Callback-פונקציות ה-שמות תת נקבעו על סמך התוויות

אתחול ופתיחת

GUI-ה

139

Page 140: Matlab אובמ - Technion

Matlab-מבוא ל

140

GUI תכנות 13.2.5

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

,למערך זה שתי מטרות. handles בשם structure הוא מערך GUI-אלמנט חשוב ב של אובייקט handle-למשל ה. GUI-ים של כל האובייקטים ב-handle-שמירת כל ה .1

data_popup הוא handles.data_popup. ניתן לשמור מידע בתת פונקציה כך שמידע זה יהיה זמין בעת ביצוע תת . שמירת מידע גלובלי .2

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

למעשה שומרת את הגרסה ושורת הקוד השניהX בעל ערך handlesך יוצר שדה חדש במער , אחר נרשום פשוטCallback- בX-כדי לגשת ל. handlesהחדשה של

,popup-נתכנן כעת את חלון ה

בהתאם לערך זה נייצר ,לכן. popup-מכיל את האפשרות שהמשתמש בחר בחלון ה' Value'הערך dataנציב ונשמור ב, מתאים-handles.

,נתכנן כעת את לחצני הכפתורים

ים -Callback-לכן ה. popupי חלון " אמור לייצר גרף מסוג שונה מהמידע הנקבע עPush buttonכל . ומשרטטים את הגרף המתאיםhandles-שלהם לוקחים את המידע מ

,הקוד

Page 141: Matlab אובמ - Technion

Matlab-מבוא ל

141

. Command Line-הריצו אותו מה. כעת הממשק הגרפי מוכן לפעולה

.ניתן גם לשלוט בתפריטים בראש הגרף .13.9יע בגרף כפי שמופNew Menu- ובחרו בTools בתפריט Menu Editorלחצו על

Menu Editorחלון : 13.9גרף

י ציון " שתיווצר עCallback-תנו שם לפונקצית ה. File- כLabelי ציון "כעת בחרו את שם התפריט ע .Tag-ה

Page 142: Matlab אובמ - Technion

Matlab-מבוא ל

142

File יצירת תפריט -Menu Editorחלון : 13.10גרף

באותו אופן קיבעו . New Menu Item ולחצו על File- בחרו בFileכדי ליצור תת תפריט של תפריט .close של תת תפריט Tag- והLabel-את ה

למעשה תפריט . Close- וFileים של שני התפריטים -Callback-לאחר שמירה נותר רק לתכנן את ה

Fileה. יפתח אוטומטית בעת לחיצה ואין ביישום זה צורך לתכנן אותו-Callback של תת תפריט close figure1 של חלון הגרפיקה הוא Tag-מאחר וה. GUI- כדי לסגור את חלון הdeleteמשתמש בפונקצית

,אז הקוד הוא

Page 143: Matlab אובמ - Technion

Matlab-מבוא ל

143

רשימת מונחים

A abs 99 ,100 add remark 90 Align Objects 136 ,137 alpha 43 ,80 Array Editor 15 ,125 ,126 avi 133 axis 43 ,45 ,46 ,48 ,74 Axis 84

B Balance Delimiters 90 Bookmark 90 box 43 ,74 break 91 ,102 breakpoints 125 ,127

C Callback 138 ,140 ,141 ,142 camlight 72 case 8 ,91 ,95 cat 34 ,39 catch 91 ,96 cell 37 ,39 ,40 ,117 ,129 celldisp 37 cellplot 38 character array 34 clabel 43 ,76 ,77 clc 6 clear 31 ,90 ,110 ,120 ,129 Clear all breakpoints 126 close file 90 Color 86 colorbar 43 ,76 ,78 colormap 43 ,84 Command Window 6 ,7 ,8 ,9 ,31 ,32 ,33 ,37 ,63, 88 ,

99 ,103 ,104 ,105 ,116 ,120 ,123 ,125 ,135 Comment 89 Component Palette 135 ,136 continue 91 ,101 ,125 ,127 contour 43 ,71 ,76 ,77 ,85 ,134 ,138 contour3 43 ,77 contourf 43 ,76 ,78 copy 82 ,90 Copy Figure 43 Copy Options 43 cputime 129 cumsum 24 ,25 Current Directory 6 ,31 ,104 cut 90 cylinder 43

D Data Statistics 59 deblank 32 delete 142 det 21

diag 12 disp 32 ,33

E Edit 43 ,81 ,90 Editor/Debugger 6 ,7 ,88 ,123 ,125 else 91 ,93 ,94 ,108 elseif 91 ,93 end 17 ,91 ,93 ,97 Erase Mode 131 error 95 ,103 ,108 Exit Debug Mode 126 exit execution 90 exit Matlab 90 eye 12

F feval 109 ,110 ,112 ,114 ,119 figure 43 ,85 Figure 83 ,84 ,86 fill 43 ,62 ,84 find 19 ,20 ,90 ,114 ,117 ,119 ,125 ,126 ,127 Find & Replace 89 fliplr 30 flipud 30 fminbnd 109 ,110 ,111 for 91 ,98 ,99 ,101 ,102 ,129 Force white background 43 format 8 fprintf 32 ,33 fsolve 109 function handle 109 fzero 109

G get 43 ,61 ,86 ,136 getframe 131 ,133 global 120 go to line 90 grid 43 ,48 ,74 GUI 83 ,134 ,136 ,138 ,140 ,142 guide 134 ,135

H handle 83 ,85 ,87 ,109 ,110 ,119 ,140 Handle Graphics 61 ,83 ,86 ,136 Handle Graphics Online Documentation 61 ,86 help 7 ,8 ,48 ,63 ,104 ,105 ,106 ,109 ,121 ,146 hold 43 ,54 ,55 ,79 HorizontalAlignment 57

I if 91 ,93 ,94 ,108 Image 84 indenting 94 inline 109 ,110 ,119

Page 144: Matlab אובמ - Technion

Matlab-מבוא ל

144

inv 21 ,30 isempty 91

K kron 29

L Layout Area 135 ,136 legend 43 ,59 length 11 ,52 Light 84 lighting 72 Line 83 ,84 ,141 linspace 15 lookfor 8 ,104 ,105

M marker 86 Menu Editor 141 ,142 mesh 43 ,68 ,69 ,71 ,74 ,134 ,138 meshgrid 27 ,68 ,70 meshz 43 ,74 ,75 movie 131

N nargchk 106 ,108 nargin 106 ,107 ,108 nargout 106 ,107 ,108 new file 90 num2str 32

O ode45 109 ones 34 otherwise 91 ,95

P paste 82 ,90 Patch 84 pcode 123 permute 35 plot 43 ,44 ,49 ,51 ,52 ,60 ,66 ,87 ,112 plot3 43 plotyy 43 ,63 Popup Menu 138 position 85 ,136 prod 26 Profiler 129 Property Inspector 135 ,136 ,137 ,138 Push Button 137 ,138

Q quadl 109

R rand 13 ,34 randn 13 ,34

realmax 9 Rectangle 84 redo 90 remove remark 90 repmat 26 ,34 reshape 35 ,36 return 91 ,103 ,108 rmfield 42 Root 84 rotate3d 43 ,70 Run 123 ,125

S save 31 ,43 ,90 script 7 ,63 ,88 ,114 ,117 ,119 ,120 ,123 ,125 ,126 ,

127 ,131 ,133 search 8 ,121 select all 90 set 43 ,61 ,63 ,86 ,136 Set Path 122 shading 43 size 11 sort 19 ,20 Stack 126 Step 125 ,126 Step in 126 ,127 Step out 127 Stop if Error 127 str2mat 32 struct 41 ,42 ,129 structure 40 ,41 ,42 ,87 ,112 ,117 ,119 ,129 ,131 ,

133 ,140 subplot 43 ,64 ,65 sum 23 ,24 ,26 ,35 surf 43 ,68 ,69 ,71 ,74 ,76 ,85 ,134 ,138 surface 84 ,85 ,86 Surface 84 ,85 surfc 43 ,71 ,76 switch 91 ,95 ,108 ,127

T tab 94 Tag 138 ,141 ,142 text 43 ,57 ,60 ,66 ,84 ,89 tic 129 title 43 ,57 ,84 toc 129 transpose 20 ,35 try 91

U Uicontextmenu 84 Uicontrol 84 Uimenu 84 Uncomment 89 undo 90 Unlock Axes Position 59 ,82

V varargin 112 ,113 ,114 ,116 ,117 ,119 VerticalAlignment 57 view 43 ,70 ,71

Page 145: Matlab אובמ - Technion

Matlab-מבוא ל

145

W waterfall 43 ,74 ,75 while 91 ,97 ,99 ,101 ,102 ,129 ,133 Workspace 6 ,7 ,10 ,15 ,31 ,66 ,120 ,123 ,125

X XData 86 xlabel 43 ,57 ,84 Xtick 86

Y Ydata 86 ylabel 43 ,57 ,63 ,84 Ytick 86

Z Zdatat 86 zeros 114 ,117 ,119 ,125 ,126 ,127 ,129 zlabel 43 ,66 zoom 43 ,82

Page 146: Matlab אובמ - Technion

Matlab-מבוא ל

146

מקורות

• Matlab help and PDF user manuals • Magrab, Azarm, Balachandran, Duncan, Herold, Walsh, An Engineer's Guide

to MATLAB