Anda di halaman 1dari 87

‫מבוא לתכנות בעזרת‬

‫‪MatLab‬‬
‫שימוש מתקדם‪-‬מטריצות‬
‫‪8_9.2/77‬‬ ‫מערכים ומטריצות‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול ‪.‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.3/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול ‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.4/77‬‬

‫מבוא למערכים‬
‫‪ ‬המקור של ‪ MatLab‬הוא במאמץ לפיתוח של‬
‫תוכניות יעילות לטיפול ופתרון משוואות ליניאריות‪,‬‬
‫‪ ‬לשם כך צריך יכולת טיפול במערכים ומטריצות‪,‬‬
‫‪ ‬רק השגרות היעילות ביותר הוכנסו לשימוש‪,‬‬
‫‪ MatLab ‬הינו "דמוי ‪ ,"C‬אך הוספו לסביבה זו כלים‬
‫המאפשרים טיפול מהיר ויעיל במערכים ומטריצות‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.5/77‬‬
‫‪ MatLab‬יכול לטפל באלו‪:‬‬
‫‪ ‬סקלרים‪:‬‬

‫‪ ‬ובאלו‪,‬‬
‫מערכים‪,‬‬
‫ומטריצות‪:‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.6/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול ‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.7/77‬‬
‫כיצד ניתן ליצור מערך?‬
‫‪ ‬או‪ ,‬אתחול מקובץ‬ ‫‪ ‬אתחול פרטני‬
‫לכל האיברים‪:‬‬ ‫של כל איבר‪:‬‬

‫‪ ‬שימו לב ל [ ] ו ‪,‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.8/77‬‬
‫כיצד ניתן ליצור מערך? (המשך)‬
‫‪ ‬ראו את שלושת ההגדרות הבאות‪:‬‬

‫‪ ‬כולן יוצרות מערכים דו‪-‬ממדיים זהים‪.‬‬


‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.9/77‬‬
‫גישה אל תא ‪ /‬שורה ‪ /‬תת‪-‬מערך‪...‬‬
‫‪ ‬יהי ‪,]arr=]11, 12, 13, 14, 15, 16‬‬
‫‪ - )arr)1 ‬האיבר הראשון במערך‪11 ,‬‬
‫‪ ‬שימו לב‪ ,‬האינדקס של האיבר הראשון הוא ‪,1‬‬
‫‪ - )arr)end ‬האיבר האחרון במערך‪, 16 ,‬‬
‫‪ - )arr)end-1 ‬האיבר שלפני האחרון במערך‪, 15 ,‬‬
‫‪ ‬מה נקבל אגב עבור ‪? )arr)7‬‬
‫‪ - )]arr)]1,3 ‬תת‪-‬מערך ‪ -‬מקומות ‪ 1‬ו ‪.]13 ,11[ :3‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.10/77‬‬
‫גישה אל ‪(...‬המשך) ‪...‬‬
‫‪ ‬תהי ‪,]M=]11, 12, 13; 14, 15, 16; 17, 18, 19‬‬
‫‪ - )M)2, 3 ‬האיבר השלישי בשורה השנייה‪16 ,‬‬
‫‪ - ): ,M)3 ‬השורה השלישית‪ ,‬כמערך שורה‪,‬‬
‫[‪]19 ,18 ,17‬‬
‫‪ - )M): ,2 ‬העמודה השנייה‪ ,‬כמערך עמודה‬

‫‪ - )M)1:2, 2:3‬תת המטריצה‪:‬‬ ‫‪‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.11/77‬‬
‫גישה אל ‪(...‬המשך) ‪...‬‬
‫‪ - ): ,:(M ‬גישה אל כל אברי ‪M‬‬
‫‪ ‬דוגמא נוספת‪:‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.12/77‬‬
‫גישה אל ‪(...‬המשך)‬
‫‪ ‬אנו יכולים לגשת אל אברי מטריצה עם אינדקס יחיד‪,‬‬
‫‪ ‬זו התייחסות אל המטריצה כמערך ארוך ‪ -‬המסודר‬
‫בסדר עמודות‪,‬‬
‫‪ )A)5 ‬יחזיר את ‪2‬‬
‫כמו ‪,)A)1, 2‬‬
‫‪ )]A)]3, 4, 5 ‬יחזיר את‬
‫המערך [‪.]11 ,2 ,4‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.13/77‬‬
‫‪reshape‬‬
‫‪ ‬ניתן לנצל את הסידור הזה של מערכים‪,‬‬
‫בשימוש בפונקציה ‪,reshape‬‬
‫» = ‪reshape))1:6,2,3 A‬‬
‫‪= A‬‬
‫‪5‬‬ ‫‪3‬‬ ‫‪1‬‬
‫‪6‬‬ ‫‪4‬‬ ‫‪2‬‬

‫‪ ‬שימו לב לפרמטרים שלה‪:‬‬


‫‪ ‬מערך‪ ,‬והממדים של המערך החדש‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.14/77‬‬
‫תרגילים (‪)1‬‬
‫‪ ‬תהי ‪,]B=]11, 12; 13, 14; 15, 16; 17, 18‬‬
‫‪ ‬חשבו את הביטויים הבאים‪:‬‬
‫(‪ R1 = B)1, :‬‬
‫(‪ R2 = B)2, :‬‬
‫(‪ C1 = B):, 1‬‬
‫(‪ B)1, :( = B)2, :‬‬
‫(‪ B):, 2( = B):, 1‬‬
‫[] = (‪ B)3, :‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.15/77‬‬
‫אופרטור ה ‪:‬‬
‫‪ ‬אם נכתוב ‪ 1:5‬נקבל את המערך [‪,]5 ,4 ,3 ,2 ,1‬‬
‫‪ ‬אם נכתוב ‪ 1:2:5‬נקבל את המערך [‪,]5 ,3 ,1‬‬
‫‪ ‬אם נכתוב ‪ 1:2:6‬נקבל את המערך [‪,]5 ,3 ,1‬‬
‫‪ ‬אם נכתוב ‪ 1 :2- :6‬נקבל את המערך [‪, ]2 ,4 ,6‬‬
‫‪ ‬שימו לב שאין צורך ב [ ]‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.16/77‬‬
‫תרגילים (‪: )2‬‬
‫‪ ‬חשבו את הביטויים הבאים‪:‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.17/77‬‬
‫תרגילים (‪: )3‬‬
‫‪ ‬יהי ‪]d = ]4:8; 9:13; 10:14; 15:19‬‬
‫‪ ‬כיצד ניתן להחליף בין שורה ‪ 2‬ו ‪?3‬‬
‫‪ ‬כיצד ניתן להחליף בין עמודה ‪ 1‬ו ‪?2‬‬
‫‪ ‬כיצד ניתן להפוך את שורה ‪?2‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.18/77‬‬
‫עוד פעולות עם אופרטור ה ‪:‬‬
‫>> ‪e = 12:17‬‬
‫‪= e‬‬
‫‪17‬‬ ‫‪16‬‬ ‫‪15‬‬ ‫‪14‬‬ ‫‪13‬‬ ‫‪12‬‬

‫>> ‪odd_vec = 1:2:9‬‬


‫‪= odd_vec‬‬
‫‪9‬‬ ‫‪7‬‬ ‫‪5‬‬ ‫‪3‬‬ ‫‪1‬‬
‫>> ‪back_vec = 9:-1:1‬‬
‫‪= back_vec‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬

‫>> ‪fractions = 0.0 : 0.2 : 1.0‬‬


‫‪= fractions‬‬
‫‪1.0000‬‬ ‫‪0.8000‬‬ ‫‪0.6000‬‬ ‫‪0.4000‬‬ ‫‪0.2000‬‬ ‫‪0‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.19/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול ‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.20/77‬‬
‫עורך המערכים‬
‫‪ ‬בהקלקה על שם‬
‫המערך‪...‬‬
‫‪ ‬ניתן לשנות‪,‬‬
‫להוסיף‪ ,‬למחוק‬
‫ערכים‪:‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.21/77‬‬
‫בוני מערכים ‪...‬‬
‫» = ‪ones))2,3 A‬‬
‫‪= A‬‬ ‫‪ - ones ‬בונה‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫מטריצת '‪'1‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪ - zeros ‬בונה‬
‫» * ‪ones))1,5 B = -3‬‬ ‫מטריצת '‪.'0‬‬
‫‪= B‬‬
‫‪3-‬‬ ‫‪3-‬‬ ‫‪3-‬‬ ‫‪3-‬‬ ‫‪3-‬‬
‫» = ‪zeros))2,3 C‬‬
‫‪= C‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.22/77‬‬
‫בוני מערכים (המשך) ‪...‬‬
‫>> ‪)ones)3‬‬
‫‪ ones ‬ו‪zeros‬‬
‫‪= ans‬‬
‫בהעברת פרמטר‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫יחיד‪ ,‬נקבל‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫מטריצה‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫ריבועית‪.‬‬
‫>> ‪)zeros)2‬‬
‫‪= ans‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.23/77‬‬
‫בוני מערכים (המשך) ‪...‬‬
‫» * ‪eye))2,2 A=3‬‬
‫‪= A‬‬ ‫‪ - eye ‬מטריצת יחידה‬
‫>> ‪)eye)3‬‬
‫‪0‬‬ ‫‪3‬‬
‫‪= ans‬‬
‫‪3‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫» =‪ones)4,4)+ eye))4,4 A‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪= A‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪2‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫>> ‪eye))2,4‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪= ans‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.24/77‬‬
‫בוני מערכים (המשך) ‪...‬‬
‫» =‪diag)]) ]1 2 3 4 B‬‬
‫‪ - diag ‬בניית מטריצה‬
‫‪= B‬‬
‫סביב אלכסון‪....‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫או ‪ -‬קבלת האלכסון‬
‫‪0‬‬ ‫‪0‬‬ ‫‪2‬‬ ‫‪0‬‬
‫של מטריצה‪.‬‬
‫‪0‬‬ ‫‪3‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪diag))B‬‬ ‫‪diag))C‬‬ ‫‪4‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪= ans‬‬ ‫‪= ans‬‬ ‫» =‪diag))]1 2 1],1 C‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪= C‬‬
‫‪2‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪3‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪2‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪4‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת‪0‬מכונות‬
‫‪8_9.25/77‬‬
‫בוני מערכים (המשך) ‪...‬‬
‫)‪A=magic(n‬‬
‫בניית ריבוע קסם (סכומי כל שורות‪ ,‬עמודות ואלכסונים שווים‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.26/77‬‬
‫‪...linespace‬‬
‫‪ ‬מה מחזירה הפקודה?‬
‫>> ‪)linspace)1, 7, 5‬‬
‫‪= ans‬‬
‫‪7.0000‬‬ ‫‪5.5000‬‬ ‫‪4.0000‬‬ ‫‪2.5000‬‬ ‫‪1.0000‬‬

‫‪ ‬מערך בן ‪ 5‬מקומות‪ ,‬החל ב‪ 1-‬ונגמר ב‪ ,7-‬עם‬


‫מרחקים שווים בניהם‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.27/77‬‬
‫‪...logspace‬‬
‫‪ ‬מה מחזירה הפקודה?‬
‫>> ‪)logspace)1, 2, 5‬‬
‫‪= ans‬‬
‫‪100.0000 56.2341‬‬ ‫‪31.6228‬‬ ‫‪17.7828‬‬ ‫‪10.0000‬‬

‫‪2‬‬
‫‪ ‬מערך בן ‪ 5‬מקומות‪ ,‬החל ב‪ 110 -‬ונגמר ב‪10 -‬‬
‫עם מרחקים הולכים וגדלים לוגריתמית‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.28/77‬‬
‫‪... repmat‬‬
‫»‪V = 2:5‬‬
‫»‪repmat))V, 3, 2‬‬
‫‪= ans‬‬
‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬
‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬
‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.29/77‬‬
‫‪( repmat‬המשך)‬
‫>>‪;]M=]1 2; 3 4‬‬
‫>> ‪repmat))M, 3, 4‬‬
‫‪= ans‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
8_9.30/77
flipud ‫ ו‬fliplr
]V = ]1:4; 5:8; 9:12 >> ]V = ]1:4; 5:8; 9:12 >>
= V = V
4 3 2 1 4 3 2 1
8 7 6 5 8 7 6 5
12 11 10 9 12 11 10 9
flipud))V >> fliplr))V >>
= ans = ans
12 11 10 9 1 2 3 4
8 7 6 5 5 6 7 8
4 3 2 1 9 10 11 12

MatLab ‫מבוא לתכנות בעזרת‬


))22100 ‫אורט בראודה – הנדסת מכונות‬
8_9.31/77
rand
rand)‘state’,0) %resets generator to initial state »
rand)4) % uniform distributed numbers »
= ans
0.9218 0.8214 0.8913 0.9501
0.7382 0.4447 0.7621 0.2311
0.1763 0.6154 0.4565 0.6068
0.4057 0.7919 0.0185 0.4860

MatLab ‫מבוא לתכנות בעזרת‬


))22100 ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.32/77‬‬
‫גודל מטריצה‬
‫‪ -size ‬גודל מטריצה‬

‫מספר שורות‬

‫מספר עמודות‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.33/77‬‬
‫גודל מטריצה (המשך) ‪...‬‬
‫>> *‪eye))2,4T= 10+2‬‬
‫‪= T‬‬
‫‪10‬‬ ‫‪10‬‬ ‫‪10‬‬ ‫‪12‬‬
‫‪10‬‬ ‫‪10‬‬ ‫‪12‬‬ ‫‪10‬‬

‫>> ‪)size)T‬‬
‫‪= ans‬‬
‫‪4‬‬ ‫‪2‬‬

‫מספר שורות‬ ‫מספר עמודות‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.34/77‬‬
‫מערכים ריקים‬
‫‪ ‬מה ייצרו הפקודות‬
‫>> ‪size))M1‬‬
‫הבאות?‬
‫‪= ans‬‬ ‫>> ‪;] ]= M1‬‬
‫‪0‬‬ ‫‪0‬‬ ‫>> ‪;M2 = 5:-2:12‬‬
‫>> ‪size))M2‬‬
‫‪= ans‬‬
‫‪0‬‬ ‫‪1‬‬

‫‪= D‬‬ ‫>> ‪;]C = ]1, 2, 3; 4, 5, 6‬‬


‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫>> = ‪zeros)size)))C D‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫מוחזר ווקטור שורה‪ ,‬כל איבר בו –‬
‫‪8_9.35/77‬‬

‫מקסימום‪/‬מינימום של עמודה מתאימה‬


‫‪max/min‬‬

‫מחזיר גם מקומות של האיברים‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.36/77‬‬
‫‪... find‬‬
‫‪a = ]3.3000‬‬ ‫‪16.5000‬‬ ‫‪29.7000‬‬ ‫» ‪42.9000‬‬
‫‪46.2000‬‬ ‫‪33.0000‬‬ ‫‪19.8000‬‬ ‫‪6.6000‬‬
‫‪49.5000‬‬ ‫‪36.3000‬‬ ‫‪23.1000‬‬ ‫‪9.9000‬‬
‫‪]22.8000‬‬ ‫‪39.6000‬‬ ‫‪26.4000‬‬ ‫‪13.2000‬‬
‫» ‪find))a>39.1‬‬
‫‪= ans‬‬
‫‪12‬‬
‫‪13‬‬
‫‪14‬‬
‫‪15‬‬

‫‪ ‬מה מחזירה הפקודה?‬


‫‪ ‬את האינדקסים של המקומות המתאימים!‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.37/77‬‬
‫‪( find‬המשך) ‪...‬‬
‫‪a = ]3.3000‬‬ ‫‪16.5000‬‬ ‫‪29.7000‬‬ ‫» ‪42.9000‬‬
‫‪46.2000‬‬ ‫‪33.0000‬‬ ‫‪19.8000‬‬ ‫‪6.6000‬‬
‫‪49.5000‬‬ ‫‪36.3000‬‬ ‫‪23.1000‬‬ ‫‪9.9000‬‬
‫‪]22.8000‬‬ ‫‪39.6000‬‬ ‫‪26.4000‬‬ ‫‪13.2000‬‬
‫>> = ‪find))a>39.1 & a>49.2 v‬‬
‫‪= v‬‬ ‫ניתן לדעת את‬
‫הערכים‬
‫‪12‬‬ ‫מחזירה‬
‫(‪>> a)v‬‬ ‫במקומות האלו‬
‫אינדקסים‬
‫‪13‬‬ ‫במטריצה‬
‫‪14‬‬ ‫= ‪ans‬‬
‫>> ‪size))v‬‬ ‫‪39.6000‬‬
‫‪= ans‬‬ ‫‪42.9000‬‬
‫‪1‬‬ ‫‪3‬‬ ‫‪46.2000‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.38/77‬‬
‫‪( find‬המשך)‬
‫‪42.9000‬‬ ‫‪a = ]3.3000‬‬ ‫‪16.5000‬‬ ‫» ‪29.7000‬‬
‫‪33.0000‬‬ ‫‪19.8000‬‬ ‫‪6.600046.2000‬‬
‫‪49.5000‬‬ ‫‪36.3000‬‬ ‫‪23.1000‬‬ ‫‪9.9000‬‬
‫‪]22.8000‬‬ ‫‪26.4000‬‬ ‫‪13.200039.6000‬‬
‫>> ]= ]‪find))a>39.1 & a>49.2 I j‬‬
‫‪= I‬‬
‫‪4‬‬
‫‪1‬‬
‫‪ ‬ומה מחזירה הפקודה עכשיו?‬
‫‪2‬‬
‫‪= j‬‬ ‫‪ ‬איך היא יודעת להחזיר דבר שונה?‬
‫‪3‬‬ ‫‪nargin‬‬
‫‪4‬‬
‫‪4‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.39/77‬‬
‫‪sort‬‬
‫»‪;]= ]12 6 9 -1 T‬‬
‫»]= ]‪sort))T sorted_T, index_T‬‬
‫‪=sorted_T‬‬
‫מערך ממוין‬
‫‪1-‬‬
‫‪6‬‬
‫‪9‬‬
‫‪12‬‬
‫‪=index_T‬‬
‫‪4‬‬
‫סדר האינדקסים הדרוש למיון‬
‫‪2‬‬
‫‪3‬‬
‫‪1‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.40/77‬‬
‫מערך מקורי‬ ‫‪sort -‬דוגמה‬

‫מערך ממוין‬

‫סדר האינדקסים הדרוש למיון‬


‫‪8_9.41/77‬‬
‫‪sum‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.42/77‬‬
‫‪cumsum‬‬
‫»‪cumsum)])]1 2 3 4‬‬
‫‪= ans‬‬
‫‪10‬‬ ‫‪6‬‬ ‫‪3‬‬ ‫‪1‬‬
‫»‪cumsum)])]1:4 ; 2:5‬‬
‫‪= ans‬‬
‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪9‬‬ ‫‪7‬‬ ‫‪5‬‬ ‫‪3‬‬

‫‪ ‬מה פשר התוצאה האחרונה?‬


‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.43/77‬‬
‫‪prod‬‬
‫»‪prod)])]1 2 3 4‬‬
‫‪= ans‬‬
‫‪24‬‬
‫>> ‪prod)])]1:4 ; 2:5‬‬
‫‪= ans‬‬
‫‪20‬‬ ‫‪12‬‬ ‫‪6‬‬ ‫‪2‬‬

‫‪ ‬מה תהא תוצאת ‪?)]prod)]1:4 ; 2:5; 1 1 1 1‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.44/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.45/77‬‬
‫האצת לולאות ‪...‬‬
‫‪ ‬במרבית שפות התכנות ניתן למצוא לולאות‪,‬‬
‫למשל לולאות ‪ for‬או לולאות ‪,while‬‬
‫‪ ‬ב ‪ MatLab‬ביצוע קוד איטרטיבי גוזל זמן רב‪ ,‬מאחר‬
‫ובכל כניסה אל הלולאה ‪ MatLab‬חוזר ומפענח את‬
‫הפקודה‪,‬‬
‫‪ ‬ניתן לפתור זאת על ידי שימוש ב ‪ m-functions‬אשר‬
‫הקוד שלהן נשמר כ ‪ p-code‬ואינו מתורגם שוב ושוב ‪,‬‬
‫‪ ‬שפות העובדות עם מהדר (קומפיילר)‪ ,‬אינן זקוקות‬
‫לתרגום חוזר‪.‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
8_9.46/77
... )‫האצת לולאות (המשך‬
Plotting a function using FOR loop to compute values %
xstart=0; xend=20;% x initialization parameters
for k=1:40000 y  5 e 0.3 x sin) x(
x)k)=xstart + )k-1)*)xend-xstart)/39999;]]%compute x
y)k)=5*exp)-0.3*x)k))*sin)x)k)); ]] % compute y
end
)plot)x,y), xlabel)'X'), ylabel)'Y'), title)''FOR loop

,‫ קוד קשה לפענוח‬


,‫ מתורגמת שוב ושוב‬for ‫ לולאת ה‬
,‫ כאינדקס במערך‬k ‫ השימוש ב‬
...‫בעייתי‬
MatLab ‫לתכנות בעזרת‬ ‫מבוא‬ ‫עלול להיות‬
))22100 ‫אורט בראודה – הנדסת מכונות‬
8_9.47/77
)‫האצת לולאות (המשך‬
Plotting a function using vector math %
xstart=0; xend=20; xstep=)xend-xstart)/40000;% x parameters
x=]xstart:xstep:xend]; % compute x vector
y=5*exp)-0.3*x).*sin)x); )!%compute y vector )no loop
)plot)x,y), xlabel)'X'), ylabel)'Y'), title)''Vector calc

,‫ קוד בהיר יותר‬


,‫ מהיר יותר‬
...‫ פחות נוטה לטעויות‬
MatLab ‫מבוא לתכנות בעזרת‬
))22100 ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.48/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.49/77‬‬
‫פעולות מערכים בסיסיות‪...‬‬
‫‪ ‬חיבור וחיסור ‪C=A+B:‬‬
‫‪=A‬‬
‫‪2 1‬‬
‫‪=B‬‬
‫‪1 4-‬‬
‫» ‪C=A+B‬‬
‫‪=C‬‬
‫‪c‬‬ ‫‪ij‬‬ ‫=‬ ‫‪a‬‬ ‫‪ij‬‬ ‫‪+b‬‬ ‫‪ij‬‬
‫‪3 4-‬‬ ‫‪6 3-‬‬ ‫‪3‬‬ ‫‪3-‬‬
‫‪9‬‬ ‫‪7-‬‬

‫» ‪C=A.*B‬‬ ‫‪ ‬כפל ‪C=A. *B :‬‬


‫‪=C‬‬
‫‪2 4-‬‬ ‫‪cij = aij*bij‬‬
‫‪18 12‬‬ ‫» ‪C=A./B‬‬
‫‪=C‬‬
‫‪2.0000 0.2500-‬‬ ‫‪ ‬חילוק ‪./ BC=A :‬‬
‫‪0.5000 1.3333‬‬
‫» ‪C=A.^2‬‬
‫‪cij = aij/bij‬‬
‫‪=C‬‬
‫‪4 1‬‬ ‫‪ ‬חזקה ‪C=A.^2 :‬‬
‫‪9 16‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪cij = aij2‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.50/77‬‬
‫פעולות מערכים בסיסיות (המשך)‪...‬‬
‫‪ ‬דוגמא‪:‬‬
‫» ‪]v1=]1 2 3 4‬‬
‫‪= v1‬‬
‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫» ‪]v2=]4 5 6‬‬ ‫הווקטור ‪ v2‬קצר מווקטור ‪– v1‬‬
‫‪= v2‬‬ ‫אסור לבצע פועלת חשבון סקלרית !‬
‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬
‫» ‪v1./v2‬‬
‫??? ‪/. >== Error using‬‬
‫‪.Matrix dimensions must agree‬‬
‫» ‪]v2=]v2 7‬‬
‫‪= v2‬‬
‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬
‫» ‪v1./v2‬‬
‫‪= ans‬‬
‫‪0.5714‬‬ ‫‪0.5000‬‬ ‫‪0.4000‬‬ ‫‪0.2500‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.51/77‬‬
‫תכונות חיבור מטריצות וכפל בסקלר‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.52/77‬‬
‫כפל מטריצות ‪...‬‬
‫‪ ‬תהי ‪ A‬מטריצה ‪ nxk‬ותהי ‪ B‬מטריצה ‪,kxm‬‬
‫‪ ‬מטריצת המכפלה ‪ C=AB‬תהיה בעלת המימדים ‪,nxm‬‬
‫‪ ‬שימו לב כי "המימדים הפנימיים" חייבים להסכים‪,‬‬
‫‪n‬‬

‫= ‪ci j‬‬ ‫‪∑a b‬‬


‫‪k =1‬‬
‫‪ik k j‬‬

‫‪for n = 2 :‬‬
‫‪c‬‬ ‫‪c12  a11b11 + a12b 21 a11b12 + a12b 22 ‬‬
‫‪C =  11‬‬ ‫‪=‬‬ ‫‪‬‬
‫‪c‬‬
‫‪ 21‬‬ ‫‪c‬‬ ‫‪22 ‬‬ ‫‪a‬‬ ‫‪b‬‬
‫‪ 21 11‬‬ ‫‪+‬‬ ‫‪a‬‬ ‫‪b‬‬
‫‪21 11‬‬ ‫‪a‬‬ ‫‪b‬‬
‫‪22 21‬‬ ‫‪+‬‬ ‫‪a‬‬ ‫‪b‬‬
‫‪22 22 ‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.53/77‬‬
‫כפל מטריצות (המשך) ‪...‬‬
‫‪ ‬דוגמא‪:‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.54/77‬‬
‫כפל מטריצות (המשך) ‪...‬‬
‫‪ ‬תהי ‪ A‬מטריצה ‪ nxk‬ותהי ‪ B‬מטריצה ‪,kxm‬‬
‫‪ ‬שימו לב כי "המימדים הפנימיים" חייבים להסכים‪,‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.55/77‬‬
‫כפל מטריצות (המשך) ‪...‬‬
‫‪ ‬דוגמאות‪:‬‬
‫>> ‪]A = ]1:4;2:5‬‬
‫‪= A‬‬ ‫‪= D‬‬
‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2 2‬‬
‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪];E=]5;4;3;2;1 >> 3‬‬
‫>> ‪]B=]1:2;2:3;3:4;4:5‬‬ ‫‪= E‬‬
‫‪= B‬‬ ‫‪5‬‬
‫‪4‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪3‬‬
‫‪3‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪4‬‬ ‫‪3‬‬ ‫‪1‬‬
‫‪5‬‬ ‫‪4‬‬ ‫>> ‪F= D*E‬‬
‫>> ‪C=A*B‬‬ ‫‪= F‬‬
‫‪= C‬‬ ‫‪35‬‬
‫‪40 30‬‬
‫‪54 40‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.56/77‬‬
‫כפל מטריצות (המשך) ‪...‬‬
‫‪ ‬דוגמאות‪:‬‬
‫‪= G‬‬
‫‪10‬‬
‫‪11‬‬
‫‪12‬‬
‫‪13‬‬
‫>> ‪H=14:17‬‬
‫‪= H‬‬
‫‪17 16 15‬‬ ‫‪14‬‬
‫>> ‪I = G*H‬‬
‫‪= I‬‬
‫‪170‬‬ ‫‪160‬‬ ‫‪150‬‬ ‫‪140‬‬
‫‪187‬‬ ‫‪176‬‬ ‫‪165‬‬ ‫‪154‬‬
‫‪204‬‬ ‫‪192‬‬ ‫‪180‬‬ ‫‪168‬‬
‫‪221‬‬ ‫‪208‬‬ ‫‪195‬‬ ‫‪182‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.57/77‬‬
‫סיכום תכונות כפל מטריצות‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.58/77‬‬
‫פעולות מערכים בסיסיות (המשך)‬
‫‪:‬‬ ‫הופכית‬ ‫מטריצה‬ ‫‪‬‬
‫‪a b ‬‬
‫‪A= ‬‬ ‫‪‬‬ ‫‪A‬‬ ‫תהי‬ ‫‪‬‬
‫‪c d ‬‬

‫‪ ‬המטריצה ההופכית מוגדרת‪:‬‬


‫‪1‬‬
‫‪−1‬‬ ‫‪ d − b‬‬ ‫‪1  d − b‬‬
‫= ‪A‬‬ ‫‪− c a  = ad − bc  − c a ‬‬
‫‪A‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬
‫‪ ‬שימו לב שלא תמיד מוגדרת המטריצה ההופכית‪..‬‬
‫מתי?‬
‫‪ A ‬חייבת להיות ריבועית‪ ,‬ו‪..‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫הדטרמיננטה של ‪ A‬חייבת להיות שונה ‪))22100‬‬
‫מאפס!‬ ‫אורט‪‬בראודה – הנדסת מכונות‬
‫‪8_9.59/77‬‬
‫פעולות מערכים בסיסיות (המשך)‬
‫‪)A/B=A*inv )B ‬‬
‫‪A\B=inv)A(*B ‬‬
‫‪ ‬המטריצה ההופכית מוגדרת ככזו ‪ -‬שכפל בה ייתן לנו‬
‫את מטריצת היחידה‪:‬‬
‫‪A*A-1 =I ‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.60/77‬‬
‫דטרמיננטה ומטריצה הופכית‬
‫=‪B‬‬ ‫(‪det)B‬‬ ‫(‪inv)B‬‬ ‫‪inv)B(*B‬‬

‫‪1‬‬ ‫‪2‬‬ ‫= ‪ans‬‬ ‫= ‪ans‬‬ ‫= ‪ans‬‬


‫‪-1‬‬ ‫‪0‬‬
‫‪2‬‬ ‫‪0 -1.0000‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪0.5000 0.5000‬‬ ‫‪0‬‬ ‫‪1‬‬

‫=‪A‬‬ ‫(‪det)A‬‬ ‫‪A/B‬‬ ‫(‪A*inv)B‬‬

‫‪6‬‬ ‫‪9‬‬ ‫= ‪ans‬‬ ‫= ‪ans‬‬ ‫= ‪ans‬‬


‫‪-4‬‬ ‫‪-6‬‬
‫‪0‬‬ ‫‪4.5‬‬ ‫‪-1.5‬‬ ‫‪4.5‬‬ ‫‪-1.5‬‬
‫‪-3‬‬ ‫‪1‬‬ ‫‪-3‬‬ ‫‪1‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.61/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.62/77‬‬
‫הערות לגבי פעולות מערכים ‪...‬‬
‫» ‪;]A = ]1 2 3 4 5‬‬
‫» ‪A*.2‬‬ ‫פעולות על מערכים הן כמו‬ ‫‪‬‬
‫‪= ans‬‬ ‫פעולות על סקלרים‪ ,‬אלא‬
‫‪10‬‬ ‫‪8‬‬ ‫‪6‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫שהן מבוצעות איבר איבר‪,‬‬
‫» ‪A*2‬‬ ‫הנקודה מסמלת כי זו פעולה‬ ‫‪‬‬
‫‪= ans‬‬
‫על מערך – והיא נדרשת רק‬
‫‪10‬‬ ‫‪8‬‬ ‫‪6‬‬ ‫‪4‬‬ ‫‪2‬‬
‫כאשר ישנה אי בהירות‪.‬‬
‫» ‪;]B = ]2 4 6 8 10‬‬
‫» ‪A.*B‬‬
‫‪= ans‬‬
‫‪50‬‬ ‫‪32‬‬ ‫‪18‬‬ ‫‪8‬‬ ‫‪2‬‬
‫» ‪A*B‬‬
‫??? ‪* >== Error using‬‬
‫‪Inner matrix dimensions‬‬ ‫‪must‬‬
‫‪.agree‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.63/77‬‬
‫הערות לגבי פעולות מערכים (המשך)‬
‫‪ ‬את כל הפעולות על סקלרים ניתן להפעיל גם על‬
‫מערכים‪:‬‬
‫» ‪;]A=]1 2 3 4 5‬‬
‫» ‪sin))A‬‬
‫‪= ans‬‬
‫‪0.9589-‬‬ ‫‪0.7568-‬‬ ‫‪0.1411‬‬ ‫‪0.9093‬‬ ‫‪0.8415‬‬
‫» ‪sqrt))A‬‬
‫‪= ans‬‬
‫‪2.2361‬‬ ‫‪2.0000‬‬ ‫‪1.7321‬‬ ‫‪1.4142‬‬ ‫‪1.0000‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.64/77‬‬
‫דוגמא לפעולה על מערך‬
‫‪ ‬נצייר את הפונקציה ‪ sin‬אבל תוך כדי איפוס כל החלק‬
‫השלילי שלה‪:‬‬

‫» ‪;x=0:pi/10:6*pi‬‬
‫» =‪sin;))xy‬‬
‫» =‪;)y>0).*yyr‬‬
‫» ‪plot))x,yr‬‬
‫» ‪)'xlabel)'x values‬‬
‫» ‪)'ylabel)'y values‬‬
‫» ‪)'title)'Rectified sine‬‬
‫» ‪)]axis)]0 6*pi -1 1‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.65/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫=‬
‫‪8_9.66/77‬‬
‫‪5‬‬
‫‪C‬‬
‫‪3‬‬ ‫‪1‬‬ ‫טרנספוז על מערכים ‪...‬‬
‫‪6‬‬
‫» ‪'D=C‬‬
‫‪4‬‬ ‫‪2‬‬ ‫‪ ‬טרנספוז על מערך מוגדר‪:‬‬
‫‪= D‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪.[mn[T = [anma[ ‬‬
‫‪4‬‬ ‫‪3‬‬
‫‪6‬‬ ‫‪5‬‬ ‫היפוך של האינדקסים‪,‬‬
‫» ‪;x=4:-1:0‬‬
‫» ‪;y=4:4:20‬‬ ‫‪ ‬בעצם זהו "היפוך"‬
‫» ]‪']x,y‬‬
‫‪= ans‬‬
‫סביב האלכסון הראשי כציר‪,‬‬
‫‪4‬‬
‫‪3‬‬ ‫‪ ‬הפעולה ב ‪ MatLab‬היא הגרש '‬
‫‪2‬‬
‫‪1‬‬ ‫‪]'x',‬‬ ‫» ]‪y‬‬
‫‪0‬‬ ‫‪= ans‬‬
‫‪4‬‬ ‫‪4‬‬ ‫‪4‬‬
‫‪8‬‬ ‫‪8‬‬ ‫‪3‬‬
‫‪12‬‬ ‫‪12‬‬ ‫‪2‬‬
‫‪16‬‬ ‫‪16‬‬ ‫‪1‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬ ‫‪20‬‬ ‫‪0‬‬
‫‪20‬‬ ‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.67/77‬‬ ‫טרנספוז על מערכים (המשך)‪...‬‬
‫‪ ‬טרנספוז על מערך נותן לנו בעצם את הצמוד‬
‫הקומפלקסי‪ ,‬בעוד ש '‪ .‬נותן לנו טרנספוז פשוט‪.‬‬
‫‪ ‬אם במערך אין אברים מורכבים ‪ -‬התוצאה זהה‪:‬‬
‫» ‪]D = ]1, sqrt)-1); 0, 1+3j‬‬
‫‪= D‬‬
‫‪1.0000i + 0‬‬ ‫‪1.0000‬‬
‫‪3.0000i + 1.0000‬‬ ‫‪0‬‬
‫» ‪'E=D‬‬
‫‪= E‬‬
‫‪0‬‬ ‫‪1.0000‬‬
‫‪1.0000i‬‬ ‫‪1.0000 - 3.0000i - 0‬‬
‫» ‪'.EE=D‬‬
‫‪= EE‬‬
‫‪0‬‬ ‫‪1.0000‬‬
‫‪1.0000i‬‬ ‫‪1.0000 + 3.0000i + 0‬‬

‫לראות כי ‪ E‬אינו שווה ל ‪.EE‬‬


‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬
‫אפשר‬ ‫‪‬‬
‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.68/77‬‬
‫‪ - reshape‬שוב‪..‬‬
‫» = ‪reshape))1:6,2,3 A‬‬
‫‪= A‬‬ ‫‪ ‬תזכורת‪:‬‬
‫‪5‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫האיברים‬
‫‪6‬‬ ‫‪4‬‬ ‫‪2‬‬
‫» ‪'B=A‬‬ ‫נשמרים בסדר‬
‫‪= B‬‬
‫‪2‬‬ ‫‪1‬‬ ‫עמודות‪,‬‬
‫‪4‬‬ ‫‪3‬‬
‫‪6‬‬ ‫‪5‬‬ ‫‪ ‬ניתן לנצל את‬
‫» ‪)B)2,2‬‬
‫‪= ans‬‬ ‫הסידור הזה‬
‫‪4‬‬
‫» ‪)B)5‬‬ ‫של מערכים‪,‬‬
‫‪= ans‬‬ ‫בשימוש‬
‫‪4‬‬
‫» ‪'):)C=B‬‬ ‫בפונקציה‬
‫‪= C‬‬
‫‪6‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪:reshape‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.69/77‬‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
... diag ‫ שימוש ב‬- 4 ‫תרגול‬
8_9.70/77

]C = ]1, 2, 3; 4, 5, 6; 7, 8, 9 »
diag) )C »
diag))C, 1 »
diag))C, 2 »
]V = ]2, 4, 6, 8 »
diag))V,0 »
diag)diag)))C »
?What are the lessons %

diag)ones))4,1),-1 c = »
diag)ones))4,1),1 c = c + »
diag)ones))2,1),3 c = c + »
diag)ones))2,1),-3 c = c + »
?What are the lessons %
MatLab ‫מבוא לתכנות בעזרת‬
))22100 ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.71/77‬‬
‫תרגול ‪ - 5‬שימוש ב ‪( diag‬המשך)‬
‫‪ ... ‬ומפגש עם כמה פונקציות חדשות‪..‬‬
‫‪D =magic))5‬‬
‫‪diag))D‬‬
‫‪diag)diag)))D‬‬
‫‪Z = ]magic)3),zeros)3,2), -ones;))3,1‬‬
‫‪*4ones )2,4),eye]))2,2‬‬
‫‪]]=)Z):,3‬‬
‫‪mess = 10*rand))4,5‬‬
‫‪test = 1./)3*ones)))2,3‬‬

‫מבוא לתכנות בעזרת ‪MatLab‬‬


‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.72/77‬‬

‫דוגמא ‪ -‬פתרון מערכת משוואות ליניארית‪...‬‬


‫‪ ‬נראה את מערכת המשוואות הבאה‪:‬‬
‫‪x1 + 2x2 = 5‬‬
‫‪2 x1 + 6x2 = 14‬‬
‫‪ ‬אנו יכולים לכתוב מערכת זו גם בכתיב מטריציוני‬
‫‪ ‬כלומר ‪ax = b‬‬
‫‪ 1 2  x1 ‬‬ ‫‪ 5 ‬‬
‫‪ 2 6   x  = 14‬‬ ‫‪ ‬או ‪x = b/a‬‬
‫‪1‬‬ ‫‪3‬‬
‫‪42 4‬‬ ‫‪{ 2 ‬‬ ‫‪‬‬
‫{‬ ‫‪‬‬
‫‪a‬‬ ‫‪X‬‬ ‫‪b‬‬ ‫‪ ‬או ‪x=a-1*b‬‬
‫‪ ‬או ‪ x=inv(a) *b‬או ‪x=a\b‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.73/77‬‬
‫פתרון מערכת מש' ליניארית (המשך)‬
‫‪x1 + 2x2 = 5‬‬
‫‪2x1 + 6x2 = 14‬‬
‫>> ‪]a=]1 2; 2 6‬‬ ‫>> ‪X=a\b‬‬
‫‪= a‬‬ ‫‪= X‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪1.0000‬‬
‫‪6‬‬ ‫‪2‬‬ ‫‪2.0000‬‬
‫>> ‪]b=]5; 14‬‬ ‫>> ‪a*X‬‬
‫‪= b‬‬ ‫‪= ans‬‬
‫‪5‬‬ ‫‪5.0000‬‬
‫‪14‬‬ ‫‪14.0000‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫‪8_9.74/77‬‬
‫תרגיל ‪6‬‬
‫כתוב תוכנית המקבלת מהמשתמש מטריצה בגודל ‪5X 5‬של ציונים‬ ‫‪‬‬
‫אקראיים מ ‪100 - 0‬‬

‫התכנית תדפיס את הציון הממוצע מתוך אלו שעברו את הקורס (מתוך‬ ‫‪‬‬
‫הציונים שגדולים מ ‪) 55‬‬

‫התכנית תדפיס את הציון הגבוה ביותר ואת מיקומו (האינדקסים שלו)‬ ‫‪‬‬
‫במטריצה‪.‬‬

‫אם הציון הגבוה מופיע כמה פעמים‪ ,‬התוכנית תדפיס את כל המקומות‬ ‫‪‬‬
‫בהם הוא מופיע‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


8_9.75/77

‫ פתרון‬- 6 ‫תרגיל‬
A=fix)rand)5(*101(
B=A)A>55( %all marks>55
av_mark=mean)B(; %average
fprintf)‘\nThe average of all mark is %.2f’,av_mark(
[i,j[=find)A==max)max)A(((; %all places of the max grade
max_mark=A)i)1(,j)1((; %from all places of the max grade we take the first place

fprintf)'\nThe greatest mark is %d and it located in the ',max_mark(;

for k=1:length)i(
fprintf)'\n%d-th row, %d-th column',i)k(,j)k((; %show all places in the vectors [i,j[
end

MatLab ) )22100 ‫מבוא לתכנות בעזרת‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.76/77‬‬

‫תרגיל ‪7‬‬

‫‪ ‬כתוב פונקציה אשר מקבלת מטריצה ריבועית‬


‫ומחזירה את סכום איברי האלכסון המשני שלה‬
‫‪ ‬למשל‪ ,‬עבור המטריצה‬
‫יהיה סכום איברי האלכסון‬
‫המשני ‪65‬‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.77/77‬‬

‫תרגיל ‪ - 7‬פתרון‬

‫;(‪function s=SecondDiag)A‬‬
‫(((‪s=sum)diag)flipud)A‬‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.78/77‬‬
‫תרגיל ‪8‬‬
‫כתוב תכנית שקולטת מהמשתמש מטריצה ובודקת‬
‫האם קיים בה מספר שהוא גם הכי גדול בשורה שלו‬
‫וגם הכי קטן בעמודה שלו‪.‬‬
‫‪  ‬למשל ‪ :‬עבור המטריצה שבדוגמה‪ ,‬המספר ‪8‬‬
‫שבשורה הראשונה עונה לקריטריון הנ"ל ‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


8_9.79/77

‫ פתרון‬- 8 ‫תרגיל‬
A=input)'Enter the matrix '(;
[m,n[=size)A(;
for i=1:m
[row,col[=find)A)i,:(==max)A)i,:(((; %row is always 1 because A)i,:( is vector 1Xn
if max))A)i,:(==min)A):,col((
fprintf)'\nThe element is %d \nIt is located in )%d,%d(',A)i,col(,i,col(;
end
end

MatLab ) )22100 ‫מבוא לתכנות בעזרת‬ ‫אורט בראודה – הנדסת מכונות‬


‫ – פתרון נוסף‬8 ‫תרגיל‬
8_9.80/77

flag=0;
A=input)'Enter the matrix '(;
[m,n[=size)A(;
for i=1:m
[row,col[=find)A)i,:(==max)A)i,:(((;
if A)i,col(==min)A):,col((
fprintf)'\nThe element is %d \nIt is located in )%d,%d(',A)i,col(,i,col(;
flag=1;
end
end
if flag==0 fprintf('\nThere are no required elements');end

MatLab ) )22100 ‫מבוא לתכנות בעזרת‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.81/77‬‬
‫תרגיל ‪9‬‬
‫כתוב פונקציה אשר מקבלת מטריצה ומספר שלם חיובי ‪ K‬ובודקת האם‬
‫קיימת במטריצה תת מטריצה ריבועית ‪2X 2‬אשר איבריה שווים ל‪.K-‬‬
‫אם תמצא תת מטריצה כזאת‪ ,‬תחזיר הפונקציה את מקומו של האיבר‬
‫הראשון בתת המטריצה (את האינדקסים שלו)‬

‫למשל‪ ,‬עבור המטריצה ‪ D‬ומספר ‪3‬‬


‫תחזיר הפונקציה (‪ – )2,2‬מיקום של האיבר‬
‫הראשון בתת המטריצה‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


8_9.82/77

‫ פתרון‬- 9 ‫תרגיל‬
function a=neib(Mat,D);
a=[0,0[;
[M,N[=size)Mat(;
for i=1:M-1
for j=1:N-1
if Mat)i,j(==Mat)i,j+1( & Mat)i,j(==Mat)i+1,j( & Mat)i,j(==Mat)i+1,j+1( & Mat)I,j(==D
a=[i,j[;
end
end
end

MatLab ) )22100 ‫מבוא לתכנות בעזרת‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.83/77‬‬ ‫תרגיל‬
‫‪10‬‬
‫כתוב תוכנית המקבלת מהמשתמש מטריצה של מספרים ומחזירה כפלט‬
‫מטריצה זהה למטריצת הקלט מלבד זה שבכל שורה הערך המינימאלי‬
‫והערך המכסימלי מחליפים מקומות‪.‬‬
‫דוגמא‪:‬‬
‫‪ 1 2 3 0 − 5‬‬ ‫‪ 1 2 −5 0 3 ‬‬
‫‪‬‬ ‫הפלט יהיה ‪‬‬ ‫‪,‬‬ ‫עבור הקלט ‪‬‬
‫‪12 5.5 7 − 4 1 ‬‬ ‫‪− 4 5.5 7 12 1‬‬
‫‪‬‬ ‫‪‬‬
‫‪ 9 11 8 10 4.3 ‬‬ ‫‪ 9‬‬ ‫‪4.3 8 10 11‬‬
‫‪‬‬ ‫‪‬‬ ‫‪‬‬

‫התכנית תקרא לפונקציה המקבלת כפרמטר ווקטורי אחד (שורת‬


‫המטריצה) ומחזירה ערך אחד ‪ :‬הווקטור המקורי שבו ערך המקסימום‬
‫וערך המינימום החליפו מקומות‪.‬‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


8_9.84/77

‫ פתרון‬-10 ‫תרגיל‬
function v=minmax(a)
[max_el,k[=max)a(;
[min_el,l[=min)a(;
a)k(=min_el; ‫תכנית ראשית‬
a)l(=max_el;
v=a; b=input)'Enter a new matrix '(;
s=size)b(;
d=[[;
for i=1:s)1(
d=[d;minmax(b(i,:))[;
end
disp)'the new matrix is:'(;
disp)d(;

MatLab ) )22100 ‫מבוא לתכנות בעזרת‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.85/77‬‬

‫תרגיל ‪11‬‬

‫כתוב פונקציה אשר מקבלת מטריצה ומחזירה את‬


‫האיבר הגדול ביותר במטריצה ואת האיבר הגדול‬
‫השני בגודלו‪.‬‬
‫‪ 1 2 −5 0 3 ‬‬ ‫למשל‪ ,‬עבור המטריצה בדוגמה‬
‫‪‬‬ ‫‪‬‬
‫‪ − 4 5.5 7 12 1 ‬‬
‫‪ 9 4.3 8 10 11‬‬
‫‪‬‬ ‫‪‬‬ ‫תחזיר הפונקציה ‪ 12‬ו‪11-‬‬
‫אסור להשתמש בלולאות!‬

‫מבוא לתכנות בעזרת ‪MatLab ) )22100‬‬ ‫אורט בראודה – הנדסת מכונות‬


‫‪8_9.86/77‬‬ ‫מטריצות – שימוש מתקדם‬
‫‪ ‬מבוא למערכים‪,‬‬
‫‪:;,‬‬
‫‪ ‬בוני מערכים‪,‬‬
‫‪ ‬האצת לולאות‪,‬‬
‫‪ ‬פעולות מערכים בסיסיות‪,‬‬
‫‪ ‬הערות לגבי פעולות מערכים‪,‬‬
‫‪,'Transpose ‬‬
‫‪ ‬תרגול‪.‬‬
‫מבוא לתכנות בעזרת ‪MatLab‬‬
‫‪))22100‬‬ ‫אורט בראודה – הנדסת מכונות‬
‫מבוא לתכנות בעזרת‬
‫‪MatLab‬‬
‫שימוש מתקדם‪ -‬מטריצות‬

Anda mungkin juga menyukai