You are on page 1of 29

‫מחברת מטלאב‬

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


‫עמ'‬ ‫מס' שם השיעור‬
‫‪2‬‬ ‫‪ 01‬מטלב בסיסי‬
‫‪4‬‬ ‫‪ 02‬שימוש ב‪ help-‬וב‪desktop-‬‬
‫‪5‬‬ ‫‪ 03‬קבצי ‪ Script‬במטלאב‬
‫‪6‬‬ ‫‪ 04‬מערכים במטלאב‬
‫‪8‬‬ ‫‪ 05‬גרפיקה דו ממדית בסיסית‬
‫‪9‬‬ ‫‪ 06‬מערכי תאים‬
‫‪10‬‬ ‫‪ 07‬פעולות לוגיות‬
‫‪11‬‬ ‫‪ 08‬בקרת זרימה‬
‫‪12‬‬ ‫‪ 09‬פונקציות ‪M-files‬‬
‫‪13‬‬ ‫‪ 10‬טיפול בבאגים ‪M-files‬‬
‫‪14‬‬ ‫‪ 11‬תכנות נכון ויעיל במטלאב‬
‫‪15‬‬ ‫‪ 12‬עבודה עם קבצים וספריות‬
‫‪16‬‬ ‫‪ 13‬אלגברת מערכים‬
‫‪17‬‬ ‫‪ 14‬גרפיקה דו ממדית מתקדמת‬
‫‪18‬‬ ‫‪ 15‬מחרוזות)‪ ,(strings‬תאים)‪ (cells‬ורשומות)‪(structures‬‬
‫‪19‬‬ ‫‪ 16‬גרפיקה תלת ממדית‬
‫‪20‬‬ ‫‪ 17‬צבעים ותאורה‬
‫‪21‬‬ ‫‪ 18‬תמונות וסרטים‬
‫‪22‬‬ ‫‪ 19‬ניתוח נתונים‬
‫‪23‬‬ ‫‪ 20‬אינטרפולציות נתונים‬
‫‪24‬‬ ‫‪ 21‬פולינומים‬
‫‪26‬‬ ‫‪ 22‬אנאליזה נומרית‬
‫‪28‬‬ ‫‪ 23‬מתמטיקה סימבולית‬
‫‪29‬‬ ‫‪ 24‬תוויות גרפיקה ויצירת ממשק הגרפי‬

‫לצפייה בשיעורים המוקלטים יש להכנס דרך ‪http://karish.bgu.ac.il/video‬‬


‫לפקולטה להנדסההנדסת מכונות )או חשמל(מטלאב‬

‫עבור ‪ :‬הנדסת מכונות‪ ,‬הנדסת חשמל‪ ,‬הנדסה גרעינית‪ ,‬מדעי הגיאולוגיה‬


‫והסביבה‪.‬‬
‫הערה ‪ :‬בצורה בלתי רשמית‪ ,‬יכול לעזור לכל סטודנט מהפקולטה להנדסה ומדעי הטבע‪.‬‬

‫נכתב ע"י יוני פרח‪.‬‬


‫שיעור ‪ - 1‬מטלב בסיסי‬
‫סדר פעולות אריתמטיות ‪:‬‬
‫‪ .1‬חזקה‪.‬‬
‫‪ .2‬כפל‪-‬חילוק‪.‬‬
‫‪ .3‬חיסור חיבור‪.‬‬

‫לכן‪ ,‬יש לשים לב לטעויות הקלדה‪ ,‬לדוגמא ‪:‬‬


‫‪4.8 = 3*4/5*2 != 3*4/(5*2) = 1.2‬‬
‫‪12.5 = (3^2+4^2)^1/2 != (3^2+4^2)^(1/2) = 5‬‬

‫‪ – Format‬מגדיר כמה ספרות יוצגו על המסך ‪:‬‬


‫‪ 5 – Short‬ספרות‬
‫‪ 15 – Long‬ספרות‬
‫אין השפעה על איכות החישוב‪.‬‬

‫‪ -‬בסוף פקודה גורם למטלאב לא להציג תדפיס על המסך של הפעולה‪.‬‬ ‫*;‬


‫‪ -‬פתיחת הערה‬ ‫*‪%‬‬

‫משתנים הם קייס‪-‬סנסיטיב‪.‬‬ ‫•‬


‫משתנה יכול להיות עד ‪ 31‬אותיות‪.‬‬ ‫•‬
‫משתנה חייב להתחיל באות‪.‬‬ ‫•‬

‫טבלת קבועים ‪:‬‬


‫תיאור‬ ‫קבוע‬
‫תשובה אחרונה‬ ‫‪ans‬‬
‫עושה קול "ביפ"‬ ‫‪beep‬‬
‫קבוע‬ ‫‪pi‬‬
‫המספר הקטן ביותר השואף לאפס לפני עיגול‪ ,‬ערכו ‪2.220446049250313e-16‬‬ ‫‪eps‬‬
‫אינסוף – ‪1/0‬‬ ‫‪inf‬‬
‫‪ NaN, nan‬לא מספר ‪0/0‬‬
‫שורש ‪-1‬‬ ‫‪I, j‬‬
‫‪Nargin‬‬
‫‪nargout‬‬
‫המספר הממשי הקטן ביותר הניתן לייצוג במטלאב‪ ,‬ערכו ‪1.797693134862316e308‬‬ ‫‪Realmin‬‬
‫‪ Realmax‬המספר הממשי הגדול ביותר הניתן לייצוג במטלאב‪ ,‬ערכו ‪2.225073858507201e-308‬‬
‫המספר השלם הגדול ביותר הניתן לייצוג במטלאב‪ ,‬ערכו ‪9.007199254740991e15=2^53-1‬‬ ‫‪bitmax‬‬
‫‪Varargin‬‬
‫‪varargout‬‬

‫‪ – Who‬נותן את רשימת המשתנים שהגדרנו במערכת‪.‬‬


‫‪ – Whos‬נותן את שמות‪ ,‬נפח‪ ,‬גודל‪ ,‬וסוג המשתנים במערכת‪.‬‬
‫‪ – Save‬שומר את כל המשתנים בקובץ ‪*.mat‬‬

‫פקודות מתמטיות‬
‫פקודה תיאור‬
‫ערך מוחלט‬ ‫‪abs‬‬
‫‪ Angle‬זווית של מספר מרוכב‬
‫החלק אממשי של מספר מרוכב‬ ‫‪real‬‬
‫‪ imag‬החלק הדמיוני של מספר מרוכב‬
‫משנה את המספר המרוכב לצמוד שלו )משנה את סימן החלק הדמיוני(‬ ‫‪Conj‬‬

‫דוגמאות לאי דיוק של מטלאב ‪:‬‬


‫• ‪ – 0.42-0.5+.08=-1.387778780781446e-17‬מה שהיה אמור להיות אפס‪.‬‬
‫• ‪ – Sin(pi)=1.224646799147353e-16‬מה שהיה אמור להיות אפס‪.‬‬
‫נשים לב שבשני המקרים הממספר שיצא לנו קטן מהקבוע ‪ ,eps‬לכן ‪:‬‬
‫‪Sin(pi)+1=1‬‬

‫הערות ‪:‬‬
‫• ברירת המחדל למספר היא מסוג ‪.double‬‬
‫• זוויות תמיד נמדדות ברדיאנים‪.‬‬
."j" ‫" או‬I" ‫חלקים דימיוניים של מספרים מרוכבים יכולים להיות על ידי האותיות‬ •
‫ ערכים אלה יכולים להדרס ויחזרו‬,‫ מאחר והם קבועי עבודה‬,j ,i ,pi ‫בהגדרת משתנים רצוי לא להגדיר למשל את המשתנים‬ •
.clear all ‫ או‬clear ‫לערכם המקורי לאחר פקודת‬
.‫פסיק‬-‫ניתן לכתוב כמה פקודות בשורה אחת ע"י שימוש בפסיק או נקודה‬ •
.‫ נקודות‬3 ‫ "ניתן לשבור שורות ארוכות עם‬,‫משהו שלא הבנתי‬ •
.Ctrl-C ‫הפסקת תוכנית ע"י‬ •

function Description Function Description Function Description


Trigonometric functions Inverse Trigonometric functions Hyperbolic Trigonometric functions
sin sine asin Inverse sine asinh Inverse hyperbolic sine
cos cosine acos Inverse cosine acosh Inverse hyperbolic cosine
tan tangent atan Inverse tangent atanh Inverse hyperbolic tangrnt
sec secant asec Inverse secant asech Inverse hyperbolic secant
csc cosecant acsc Inverse cosecant acsch Inverse hyperbolic cosecant
cot cotangent acot Inverse cotangent acoth Inverse hyperbolic
cotangent

product and power based functions


log Natural log - lan log2 Base 2 logarithm log10 Base 10 logarithm
abs Magnitude angle Phase angle [rad] conj Imaginary conjugate
sqrt Square root pow2 Base 2 power nextpow2 next higher power of 2
imag Imaginary part real Real part isreal True for real values
cplxpair Sort vector into complex pairs complex real+imaginarycomplex

round functions
fix Round floor Round towards negative infinty ceil Round towards positive inf
towards0
mod Modulus rem Reminder after division sign Signum
round Round toward nearest int.

Coordinate manipulation functions


pol2cart Polar to Cartesi Cart2pol Cartesian to Polar or Cylin. cart2sph Catesian to Spherical
factor prime factors isprime True for prime numbers gcd Greatest common divisor
rats rational output rat rational approximation lcm Least common multipile
nchoosek All comb. Of N elements taken K at perms All possible combinations
a time

other functions
beta Beta func betainc Incomplete beta func betaln Log of beta func
gamma Gamma func gammainc Incomplete gamma func gammaln log of gamma func
nd rd
besselj Bessel func – bessely Bessel func – 2 kind besselh Bessel func – 3 kind
st
1
st nd
airy Airy functions besseli Mod. Bessel func. Of 1 kind besselk Mod. Bessel func Of 2
kind
erf Error function ellipj Jacobi elliptic function ellipke Complete elliptic integral
erfinv Inverse error erfcx Scaled complementary error func expint exponential error function
func
dot vector dot cross vector cross product legenre Associated legendre func
produc
desktop-‫ וב‬help-‫ שימוש ב‬- 2 ‫שיעור‬
.‫ לקבלת עזרה עבור פונקציה מסויימת‬- Help "func"
.‫ – לקבלת עזרה מורחבת עבור פונקצייה מסויימת‬Doc "func"

: ‫כשמקלידים שם כלשהו בשורת הפקודה מטלאב יבדוק את הדברים בסדר הבא‬


?‫ האם יש משתנה בשם הזה‬.1
?‫ האם יש פונקציה מובנת בשם הזה‬.2
?‫ בספריה הנוכחית‬M ‫ האם זהו קובץ‬.3
?‫ שלא בספריה הנוכחית‬M ‫ האם זהו קובץ‬.4
.‫ מטלאב ייתן הודעת שגיאה‬,‫ אם התשובה לכל אלו שלילית‬.5

Function Usage
cd Change directory
pwd Set present working directory
dir List of all files in the current directory
what displays files in a directory, grouped by type
! (OS command) giving command in the OS environment
which Identifies the object referenced
clear Remove function or variable from memory
whos List workspace variables
size gives the size of a matrix (rows, columns)

.‫מטלאב מקצה זיכרון בצורה דינמית‬ •


.‫" יש למחוק משתנים‬out of memory" ‫במקרה קיצוני של שגיאת‬ •
‫ נוצר לנו מצב של זיכרון מחורר‬,‫במקרה שבו מחקנו משתנים ועדיין יש בעיית זיכרון או שיש בעיית זיכרון ולא מילאנו את כולו‬ •
.pack ‫( כדי לתקן זאת יש להשתמש בפקודה‬fragmented)

: ‫טבלת ייצוג מספרים‬


Format Representation General
short 3.1416 5 digits
long 3.14159265358979 15 digits
short e 3.1416e+000 5 digits + exponent
long e 3.141592653589793e+000 16 digits + exponent
long g 3.14159265358979 Best of long and long e
hex 400921fb54442d18 Hex floating point
bank 3.14 2 decimal digits
+ + +-0
rat 355/113 Rational approx. Inter. Storage info
‫ במטלאב‬Script ‫ קבצי‬- 3 ‫שיעור‬
‫ לקבצים אלו יש סיומת‬,‫ המבצעת סדרה של פקודות הנמצאות בקובץ כלשהו‬ASCII ‫ הכתוב בתקן‬,‫ סוג של תוכנית מטלאב‬- ‫סקריפט‬
.(m-files) m ‫* והם נקראים קבצי‬.m
.‫ יש לקחת בחשבון את סדר הפעולות של מטלאב מהשיעור הקודם‬,‫ניתן להריץ קובץ סקריפט ע"י הקלדת שמו בשורת המשימה‬

: ‫פקודות שימושיות לסקריפטים‬


Command Description
pause "hit any key to continue".
pause (n) pause n seconds.
keyboard pause, gives the user control in the command line till the user inserts the "return" string.
break terminate execution.
return when shows inside a script acts like in keyboard command.
input receive input from the user while running the script.
beep makes computer beep
disp(var) displays value of the variable without it's name.
waitforbuttonpress like pause, including a mouse click
echo on\off flags. shows executed commands in the command window
‫שיעור ‪ - 4‬מערכים במטלאב‬
‫כל משתנה הוא מערך ווקטור‪.‬‬ ‫•‬
‫סוגריים מרובעות מציינות מערך‪.‬‬ ‫•‬
‫כדי לבנות ווקטור עמודה יש להקליד נקודה‪-‬פסיק בין כל איבר‪.‬‬ ‫•‬
‫הקיצור ‪ begin:step:end‬אומר‪ ,‬סדרה חשבונית המתחילה ב‪ ,begin‬בעלת צעד של ‪ step‬ומסתיימת ב ‪.end‬‬ ‫•‬
‫ערך ברירת המחדל של ‪ step‬הוא ‪ ,+1‬לכן ניתן להגדיר סדרה עולה )יורדת אי אפשר( ע"י ‪ begin:end‬בלבד‪.‬‬ ‫•‬
‫במקרה ובכל מקרה נכתוב ‪ begin:end‬כאשר ‪ begin‬גדול מ‪ end-‬נקבל מטריצה ריקה‪ ,‬בעלת קבוצה ריקה )מימד ‪.(0‬‬ ‫•‬
‫הערך ‪ end‬הוא גבול‪ ,‬במקרה ואין איבר בסדרה ששווה לגודל הזה הסדרה תיפסק באיבר הכי גדול בתחום‪.‬‬ ‫•‬
‫מטריצות תמיד יהיו ריבועיות‪ ,‬איבר שלא יוגדר ע"י המשתמש יהיה אוטומטית אפס‪.‬‬ ‫•‬
‫ניתן לכתוב ביטויים אלגבריים ולא רק מספרים מפורשים‪.‬‬ ‫•‬
‫"‪ – "array_name"("row","column") = "value‬מכניס ערך ‪ value‬במערך דו מימדי בשורה ‪ row‬בעמודה ‪.column‬‬ ‫•‬

‫‪ – Rand‬פקודה שיוצרת מערך בגודל הארגומנט של מספרים אקראיים )בפילוג אחיד – תוחלת חצי( בין אפס לאחד‪.‬‬

‫)‪ – Linspace(begin,end,segmaents‬נותן מספר ‪ segments‬של ערכים הגדלים באופן שווה בין ערכי הגבול וכוללים אותם‪.‬‬

‫)"‪ – Logspace("log10begin","log10end","segments‬דומה לפקודה הקודמת‪ ,‬רק שהסקאלה היא לוגריתמית וכאן נותנים את הלוגריתם של‬
‫הנקודות‪.‬‬

‫)‪ - Array(from:to‬ניתן להשתמש באופרטור נקודותיים כדי לשלוף ערכים של תת‪-‬מערך‪ from ,‬לא חייב להיות המיקום ההתחלתי ו‪ to-‬לא חייב‬
‫להיות המיקום הסופי‪.‬‬

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

‫מטלאב מאובחן כלוקה סכיזופרניה‪ ,‬נא להודיע למחלקה לפסיכולוגיה‪.‬‬

‫ניתן לפנות לערך במטריצה ע"י הכנסת הקואורדינציה שלו או ע"י הכנסת המיקום הווקטורי שלו‪ ,‬שהוא מספר העמודה שלו פחות אחד כפול‬
‫מספר השורות כל זה ועוד מספר השורה שהוא נמצא בה‪.column*LINE+line ,‬‬

‫אם כותבים את התו "‪ ":‬בארגומנט למיקום האיבר התוצאה תהיה כל‬
‫תחום האיברים‪ ,‬לדוגמא ][=)‪ array(row,:‬היא פקודה למחיקת השורה‬
‫הראשונה במערך‪.‬‬

‫)‪ – Size(array‬נותן את מספר האיברים במערך‪.‬‬

‫)‪ – Size(array, 1‬נותן את מספר התאים הראשון במערך בעל‬


‫מספר מימדים‪ ,‬במערך דו מימדי את מספר השורות‪.‬‬

‫)‪ – Size(array,2‬במערך דו מימדי את מספר העמודות‪.‬‬

‫)‪ – Sub2ind(size(array),row,col‬נותן את האינדקס הווקטורי של‬


‫האיבר‪.‬‬

‫)‪ – Ind2sub(size(array), index‬נותן את האינדקס המטריצי של‬


‫האיבר‪.‬‬

‫"ווקטור של אחדים ואפסים לוגיים הוא לא אותו הדבר כמו‬


‫ווקטור של אחדים ואפסים רגילים"‬

‫)]‪ – Logical([v1 v2 v3… vn‬פונקציה לבניית וקטור לוגי‪.‬‬

‫)‪ – Ones(n‬מחזירה מטריצה ריבועית ‪ nXn‬שכל האיברים בה‬


‫הם ‪ ,1‬ניתן להכניס במקום ‪ n‬קוארדינטות המגדירות מטריצה‬
‫לא ריבועית‪.‬‬

‫)‪ – Zeros(n‬דומה ל‪ ,ones‬הפעם זו תהיה מטריצת אפסים‪.‬‬

‫)‪ – Eye(n‬מחזירה מטריצת יחידה‪.‬‬

‫)‪ – Rand(n‬מחזירה מטריצת מספרים רנדומאליים )‪.(0-1‬‬

‫)]‪ – Diag([vector‬מחזירה מטריצה אלכסונית שאלכסונה הוא הווקטור בארגומנט‪.‬‬


‫)‪ – Length(array‬מחזירה את אורך המימד הגדול ביותר‪ ,‬במקרה ואחד המימדים הוא אפס‪ ,‬הפונק' תחזיר אפס‪.‬‬

‫)‪ – Numel(array‬מחזירה את מספר האיברים במערך‪.rows*columns ,‬‬

‫במקרה והגדרנו מערך בעל ‪ nXm‬איברים ונרצה להכניס אליו וקטור גדול מ‪ n-‬או ‪ m‬נקבל הודעת שגיאה‪.‬‬ ‫•‬

‫)‪ – Reshape(array, row, col‬משנה את המערך )ווקטור או‬


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

‫)‪ – Repmat(array, vector‬משכפל מערך בצורת טור‪ ,‬עמודה‪ ,‬או‬


‫מטריצה ריבועית‪.‬‬

‫)‪ – Randperm(number‬נותן מערך בגודל ‪ number‬של כל‬


‫המספרים השלמים מאחד על ‪ number‬בסדר רנדומלי‪.‬‬

‫)‪ – Sort(array‬מחזירה ווקטור הממיין מערך בצורה עולה‪ ,‬במקרה‬


‫והמערך דו מימדי הפונקציה ממיינת את הטורים בצורה עולה מלמעלה‬
‫למטה‪ ,‬כאילו כל עמודה היתה ווקטור נפרד‪.‬‬

‫)‪ – [sorted, indexed]=sort(array‬פעולה זו לא יוצרת ווקטור‪,‬‬


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

‫)‪ - [sorted, indexed]=sort(array(:,col); array(indexed,:‬מיון שורות במטריצה לפי העמודה ‪.col‬‬

‫)‪ – [sorted, indexed]=sort(array,dimension‬מיון המערך לפי המימד ה‪ dimension-‬שלו‪ ,‬מימד ראשון הוא טור‪ ,‬שני שורה‪ ,‬וכו'‬

‫)‪ – Find(abs(x)>1‬מחזיר ווקטור של האינדקסים של האיברים שעונים לתנאי הלוגי בארגומנט‪ ,‬לחילוץ הערכים הללו ניתן לשים את הווקטור המוחזר‬
‫כארגומנט למערך‪.‬‬

‫נעדיף למיין מטריצות לווקטור ולא למערכים‪ ,‬לכן נעשה השמה למשתנה בודד‪.‬‬ ‫•‬
‫פונקציות ‪ max‬ו‪ min-‬פועלות דומה לפונקציית ‪.sort‬‬ ‫•‬

‫))‪ - max(array(:‬כדי למצוא ערכי מינ' או מקס' מוחלטים בכל המערך‪.‬‬

‫עוד כמה פונקציות שימושיות ‪:‬‬ ‫פעולה בין סקלאר ומטריצה ‪:‬‬
‫עובד עם כל הפעולות האריתמטיות‬

‫כדי לבצע פעולות איבר לאיבר בין סקלאר ומטריצה‪ ,‬יש לשים לפני האופרטור האריתמטי נקודה ‪./ .* .^ :‬‬ ‫•‬
‫מימדי המטריצות חייבים להתאים‪.‬‬ ‫•‬
‫מימדי מטריצת התוצאה זהה למימדי המטריצות המקוריות‪.‬‬ ‫•‬

‫פעולה בין מטריצות ‪:‬‬


‫• מטלאב יעבוד אוטומטית לפי חוקי אלגברה ליניארית‪.‬‬
‫• אין צורך בנקודה לפני אוטפרטור‪.‬‬
‫• ‪ A ,Inv(A)*b=A\b‬מטריצה‪ b ,‬ווקטור‪.‬‬

‫)‪ – Diff(array‬מחזיר מערך שהוא ההפרש בין כל‬


‫שני איברים ב‪.array-‬‬
‫שיעור ‪ - 5‬גרפיקה דו ממדית בסיסית‬
‫ברירת המחדל של מטלאב בציור גרפים הוא קו כחול רציף ללא סימון נקודות‪.‬‬ ‫•‬
‫מטלאב מניח שציר האיקס ליניארי למספר ערכי המערך שניתן לו‪.‬‬ ‫•‬
‫מטלאב מחבר בקווים ישירים בין כל הנקודות‪ ,‬במקרה ואין מספיק נקודות‪ ,‬הגרף יהיה קו עקום שבור ולא מעוגל‪.‬‬ ‫•‬
‫כל סט מערכים חייב להיות בעל אותו מספר ערכים‪.‬‬ ‫•‬
‫שני הסטים לא חייבים להיות בעל אותו מספר ערכים‪.‬‬ ‫•‬

‫)‪ – Plot(x1,y1,x2,y2…,‬מצייר גרף‪ ,‬כל הארגומנטים הם מערכים‪ 8 ,‬הזוגות הראשונים יהיו בעלי צבעים שונים‪.‬‬

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

‫‪ – Hold‬פונקציה בעלת פלאג ‪ ,on\off‬כשהיא פועלת כל ‪ plot‬שנעשה יהיה על‪-‬גבי אותה מערכת צירים‪.‬‬
‫‪ - Grid‬פונקציה בעלת פלאג ‪ ,on\off‬כשהיא פועלת הגרף משובץ‪.‬‬

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

‫)'…'(‪ – Title‬כותרת ראשית‪.‬‬


‫)'…'(‪ – Xlabel‬שם הציר‪ ,‬אותו הדבר יש גם ל‪.y-‬‬
‫)'…'‪ – Text(Xvalue,Yvalue,‬הוספת טקסט ע"ג הגרף‬
‫)…‪ – Legend('…',…',‬הוספת מקרא‪ ,‬יש למלא ערכים‬
‫כמספר הגרפים‪.‬‬

‫)]‪ – Axis([xmin xmax ymin ymax‬קובעת את תחום הצירים‪.‬‬

‫)‪ – Figure(n‬מביא את חלון הגרף מספר ‪ n‬לחזית המסך‪.‬‬


‫)‪ – Close(n‬סוגר את חלון הגרף ‪.n‬‬
‫‪ – Clf‬מנקה את מסך הגרף‪.‬‬

‫)‪ – Loglog(range‬שני הצירים בבסיס לוגריתמי‪.‬‬


‫)‪ – Semilogy(range‬ציר ‪ y‬לוגריתמי‪.‬‬
‫)‪ – Semilogx(range‬ציר ‪ x‬לוגריתמי‪.‬‬

‫‪ - Plotyy‬מצייר על אותה מערכת צירים שני גרפים‪ ,‬ומעוות את סקאלת ‪ y‬כך שכל גרף יראה בקנה מידה מתאים מהציר המקורי שלו‬

‫כאשר פקודות לגרף נעשות באותה שורה העיבוד שלהן נעשה סימולטנית וחוסך זמן‪.‬‬ ‫•‬
‫בהרצת ‪ m-file‬עיבוד הגרף נעשה בסוף ההרצה‪.‬‬ ‫•‬
‫ניתן להתגבר על זה ע"י פקודת ‪.drawnow‬‬ ‫•‬

‫)]‪ – Ezplot(string ,[from,to‬ציור מהיר של גרף לפי הסטרינג‪.‬‬

‫לעבור ב‪ help‬על ‪.break, case, else, elseif, end, for, if, otherwise, while :‬‬
‫שיעור ‪ - 6‬מערכי תאים‬
‫מערכי תאים – מערך מוכלל בו כל איבר יכול להיות מכל סוג וגודל שהוא‪.‬‬ ‫•‬
‫כדאי להבדיל בשמות המשתנים בין מערכי תאים ומערכים רגילים‪.‬‬ ‫•‬
‫השימוש במערכי תאים יהיה עם סוגריים מסולסלות‪ ,‬סוגריים חיצוניות‪.‬‬ ‫•‬
‫לא להכניס תאים למשתנים קיימים‪.‬‬ ‫•‬
‫הסוגריים במסולסלות יכולים להופיע משמאל לסימן ההצבה‬ ‫•‬

‫)‪ – Celldisp(a‬פורש את כל התאים לפי הסדר ומפרט את תוכנם‪.‬‬


‫)‪ – Cell(row,col‬יצירת מערך תאים מראש )ריק(‬

‫כששולפים תא בסוגריים עגולות‪ ,‬מקבלים מידע כלל על התא‪.‬‬ ‫•‬


‫כששולפים תא בסוגריים מסולסלות‪ ,‬מקבלים את תוכן התא‪.‬‬ ‫•‬

‫)‪ – Double(string‬הופך את כל תווי האסקי לערכם המספרי‪.‬‬


‫)‪ – Char(vector‬הופך מספרים )חלקם השלם( לתווי אסקי לפי ערכי המספרים‪ ,‬עושה מודולו לערכים לפי ‪.256‬‬

‫כדי לכתוב גרש בסטרינג יש לכתוב פעמיים גרש‪.‬‬ ‫•‬

‫)‪ – Strvcat(strings‬משרשר סטרינגים במצריצה לפי שורות‪ ,‬שורה ריקה תמחק‬


‫• פקודת ‪ char‬עושה אותו הדבר אך איננה מתעלמת משורות ריקות‪\.‬‬
‫• ‪ Strcat‬גם מוחקת בלנקים‪.‬‬
‫• סוגריים מסולסלות לא מוחקים בלנקים‪.‬‬

‫)‪ – Int2str(int‬הופכת ממספרים שלמים למחרוזת‪.‬‬


‫)‪ – Num2str(number‬כמו הקודמת‪ ,‬רק שהמספרים לא חייבים להיות השלמים‪.‬‬
‫)‪ –Mat2str(matrics‬הופכת ממטריצה לסטרינג‪.‬‬
‫)‪ – Ischar(string‬פעולה לוגיתף שואלת האם התוכן הוא סטרינג‪.‬‬

‫אין איוולויאציה למשתנים שהוגדרו ע"י המשתמש‪.‬‬ ‫•‬

‫‪ – Randn‬פונקציה שנותנת מספרים רנדומליים‪ ,‬מה ההבדל בינה לבין ‪?rand‬‬


‫)‪ –Eval(string‬מריצה סטרינג כפקודה‪.‬‬

‫במקרה והיה שימוש במשתנה לא מאותחל לא נקבל תשובה )קבוצה ריקה?(‪.‬‬ ‫•‬

‫)‪– Evalc(string‬‬
‫שיעור ‪ - 7‬פעולות לוגיות‬
‫המשמעות הלוגית של מספרים היא בדיוק כמו בשפת סי‪.‬‬ ‫•‬
‫להבדיל משפת סי‪ ,‬לא שווה מסומן כך =~‪ ,‬באותו מטבע משמעות ~ היא )!( ‪Not‬‬ ‫•‬
‫כדי לעשות פעולות השוואה לוגיות בין מערכים הם צריכים להיות באותו גודל והפעולה תעשה איבר‪-‬איבר‪.‬‬ ‫•‬
‫וגם ‪ ,& -‬או ‪| -‬‬ ‫•‬
‫‪ NaN‬כפול סקלאר = ‪NAN‬‬ ‫•‬
‫‪NaN==NaN : =0‬‬ ‫•‬
‫‪NaN~=NaN : =1‬‬ ‫•‬
‫לכן הדרך הטובה ביותר לבדוק אם יש לנו‪.‬‬ ‫•‬
‫‪ NaN‬היא באמצעות )‪isnan(a‬‬
‫‪Inf == Inf : =1‬‬ ‫•‬
‫][= ‪[]==[] :‬‬ ‫•‬
‫לכן נשתמש בפונקציה )‪.isempty(a‬‬ ‫•‬

‫נשים לב לפקודות ‪ any‬ו‪ all-‬אשר מחליפות את && ו || משפת סי‪.‬‬

‫)'‪ – Isa(X,'double‬זוהי פונקציית האם של כל פונקציות ‪ ,is‬בודקת אם האלמנט ‪X‬‬


‫הוא מהסוג שבין הגרשים‪ ,‬רק כך ניתן לבדוק דאבל‪.‬‬
‫שיעור ‪ - 8‬בקרת זרימה‬
‫‪For x=array‬‬ ‫חשוב לזכור ש‪ for-‬רצה על ווקטור שורה‪ ,‬היא רצה רק פעם אחת לעמודה‪ ,‬ז"א‪ ,‬שאם בארגומנט שלו יש‬ ‫•‬
‫…‬ ‫ווקטור עמודה אינסופי‪ ,‬היא ירוץ פעם אחת‪.‬‬
‫‪end‬‬ ‫אם משתמשים בלולאת ‪ for‬כדאי להקצות מערך בגודל מתאים לפני ריצת הלולאה‪.‬‬ ‫•‬
‫במטלאב אין ‪.than‬‬ ‫•‬
‫בפקודת ‪ ,switch‬ה‪ expression-‬לא לוגי‪ ,‬הוא סקלאר או מחרוזת‪.‬‬ ‫•‬
‫בכל ‪ test_expression‬יש פעולה לוגית‪.‬‬ ‫•‬
‫‪ Otherwise‬הוא אופציונאלי‪.‬‬ ‫•‬
‫אין צורך להקפיד על ‪ expression‬ו‪ test_expression-‬באותו הגודל‪.‬‬ ‫•‬
‫אם יש כמה ‪ test_expression‬ב‪ case-‬אחד פועלת ברירת ‪.OR‬‬ ‫•‬
‫פקודות ‪: try-catch-end‬‬ ‫•‬
‫‪ -‬כל קבוצת הפקודות של ‪ try‬רצה‪.‬‬
‫‪ -‬אם אין שגיאות יש מעבר ישיר ל‪.end-‬‬
‫‪ -‬אם יש שגיאות סט פקודות ‪ catch‬מופעלת‪ ,‬בדרך כלל מטרתן הוא טיפול‬
‫בשגיאות שהיו בסט ‪.try‬‬
‫‪ -‬במקרה השני נוצר משתנה ‪ lasterr‬שבתוכו הודעת השגיאה‬
‫האחרונה‬
‫שיעור ‪ - 9‬פונקציות ‪M-files‬‬
‫סקריפט ‪ m-file‬זהו אוסף פקודות המבוצעות כאילו הוקלדו ע"י המשתמש‪ ,‬בתוספת בקרת זרימה‪.‬‬ ‫•‬
‫פונקשין ‪ m-file‬זוהי פונקציה לכל דבר בעלת ארגומנטים‪ ,‬המשתנים הפנימיים שלה לא נגישים לסביבת העבודה ולהפך‪.‬‬ ‫•‬
‫הכרזת ה‪ m-file‬הפונקציה תבוצע בשורה הראשונה של הקובץ כך ‪function "variable"="func_name"("arguments") :‬‬ ‫•‬
‫שם הפונקציה הוא שם הקובץ בו היא שמורה‪ ,‬רצוי שזה יהיה אותו השם כמו בהכרזה‪ ,‬פחות מ‪ 31‬אותיות קטנות בלבד‪.‬‬ ‫•‬
‫שם פונקציה חייב להתחיל באות‪ ,‬אח"כ ניתן לשים תווי מספרים ומקפים‪.‬‬ ‫•‬
‫אין צורך ב‪ return-‬בסוף פונקציה‪ ,‬למרות שזה חוקי ופועל בדיוק כמו בשפת סי‪.‬‬ ‫•‬
‫אחרי הכרזת הפונקציה תבוא סדרת הערות‪ ,‬סדרת הערות זו תהיה הטקסט שיוצג אם תופעל פונקציית ‪ help‬על הפונקציה‪.‬‬ ‫•‬
‫שורת ההערה הראשונה מההערות הללו נקראת ‪ H1‬בה יופיעו מילות המפתח לפונקציה‪.‬‬ ‫•‬
‫מספר הארגומנטים בהכרזה הוא המספר הארגומנטים המקסימלי‪.‬‬ ‫•‬
‫המשתנה ‪ nargin‬נוצר אוטומטית בפונקציה‪ ,‬מציין את מספר הארגומנטים שהמשתמש הכניס‪.‬‬ ‫•‬
‫המשתנה ‪ nargout‬נוצר אוטומטית בפונקציה‪ ,‬מציין את מספר המשתנים שהמשתמש ביקש‪.‬‬ ‫•‬

‫)'‪ – Error('string‬כתיבת הודעת שגיאה בחלון העבודה וסיום ריצת הפונקציה‪.‬‬

‫הארגומנטים לא מועתקים לסביבת העבודה של הפונקציה אלא אם חל בהם שינוי במהלך פעולת הפונקציה‪.‬‬ ‫•‬
‫אם לא הוצב ערך למשתנה "‪ "variable‬לא יהיה פלט לפונקציה‪ ,‬לכן הצבת תשובת הפונקציה למשתנה בסביבת העבודה תגרור‬ ‫•‬
‫שגיאה‪.‬‬
‫כתיבת המשתנים ‪ Varargin‬ו‪ varargout-‬מקנים דינמיות לקבלת הארגומנטים‪ ,‬או לחילופין להחזרת משתנים‪ ,‬מעבר למספר‬ ‫•‬
‫סופי קבוע‪.‬‬
‫כדי לדבג פונקציה ניתן להשתמש בפונקציית ‪ keyboard‬שהזכרנו באחד השיעורים הראשונים‪.‬‬ ‫•‬

‫"‪ - Global "variable_name‬להכרזת משתנה גלובלי או ייבוא משתנה גלובלי מסביבת עבודה אחרת‪.‬‬

‫‪ – Clock‬מחזירה את השעה הנוכחית לפי שעון המחשב‪.‬‬


‫‪ – Tic‬תחילת סטופר‬
‫‪ – Toc‬סיום סטופר‬

‫"‪ persistent "variable_name‬יצירת או יבוא משתנה עקבי‪ ,‬משתנה זה דומה לגלובלי רק שסביבת עבודתו מוגבלת לסביבה‬ ‫•‬
‫אחת‪.‬‬
‫משתנה כזה שרץ בפעם הראשונה הוא ריק‪ ,‬קבוצה ריקה‪.‬‬ ‫•‬

‫)'‪ – Evalin('string1','string2‬גורם לביטוי לעבור איווליואציה בכמה סביבות )‪.(base, caller, expression, try, catch‬‬

‫)"‪ – Assignin("workspace", "variable", "value‬הצבת הערך למשתנה בסביבה אחרת )‪.(caller, base‬‬

‫לבדוק את הפונקציה ‪.mmswap.m‬‬

‫פונקציות יכולות לקרוא אחת לשניה ולסקריפטים‪.‬‬ ‫•‬

‫)'‪ – Warning('string‬דומה לפקודת ‪ error‬אך לא מפסיקה את פעולת הפונקציה‪.‬‬

‫הפונקציה הראשית ב‪ m-file‬היא הפונקציה הראשונה‪ ,‬כל פונקציה שתכתב בהמשך הקובץ תהיה ‪.sub-function‬‬ ‫•‬
‫‪ Sub-functions‬יכולות לקרוא אחת לשניה‬ ‫•‬

‫"‪ - Pcode "function‬שמירת פונקציה בפסאודוקומפילציה‪.‬‬


‫• לטעינה מהירה יותר של פונקציה בפעם הראשונה‪.‬‬
‫• לנעילת הקוד כדי שלא יהיה חשוף לאחרים‪.‬‬

‫לכל פקודה ניתן לקרוא בצורת פונקציה‪ ,‬כך ורק כך‪ ,‬ניתן להציב את תשובותיהם למשתנה או מבנה‪.‬‬ ‫•‬
‫פקודות מקבלים ארגומנטים כסטרינגים‪ ,‬ובמקרה של אריתמטיקה יבוצעו פעולות על ערכי ה‪ ASCII‬שלהם‪.‬‬ ‫•‬
‫שיעור ‪ - 10‬טיפול בבאגים ‪M-files‬‬
‫שתי הבאגים הנפוצים ביותר במאטלאב הם כאשר כתוצאה מחישוב במהלך התוכנית מתקבל ‪ NaN‬או מערך ריק‪.‬‬ ‫•‬
‫במהלך דיבאג נוריד נקודה‪-‬פסיק מסוף השורה‪.‬‬ ‫•‬
‫פירוט משתנים במהלך ההרצה‪.‬‬ ‫•‬
‫פקודת ‪ ,keyboard‬סיומה על ידי הפקודה ‪.return‬‬ ‫•‬
‫הפיכת הפונקציה לסקריפט ואז ה‪ workspace-‬מתאחד‪.‬‬ ‫•‬
‫איפה שיש נקודה אדומה השורה עוד לא בוצעה‪.‬‬ ‫•‬
‫ניתן לעמוד על המשתנה ואז ערכו יופיע בפופ‪-‬אפ‪.‬‬ ‫•‬
‫כדי לראות תלות בין הפונקציה שלנו לפונקציות וסקריפטים אחרים נוכל להשתמש בפקודת ‪,depfun‬אופן השימוש שלה לא ברור‬ ‫•‬
‫בהרצאה‬

‫כדאי לאחסן חישובים במשתנים ולא לעשוות חישובים חוזרים במהלך העבודה‪ ,‬מטעמי חיסכון בזמן ויעילות עבודת המחשב‪.‬‬ ‫•‬
‫שימוש בווקטורים יכול ליעל את התכנות‪.‬‬ ‫•‬

‫‪ – Profile on\off\report‬תחילת וסיום תהליך ה ‪ ,profiling‬תזמון תהליכים שוטף במהלך הרצת הפונקציה‪.‬‬
‫שיעור ‪ - 11‬תכנות נכון ויעיל במטלאב‬
‫הגורמים ליעילות התוכנית ‪:‬‬
‫כל שורת קוד עוברת סוג של קומפילציה בזמן ביצועה‬ ‫•‬
‫יש להמנע מלופים‪.‬‬ ‫•‬
‫וקטוריזציה – לזה מטלאב נועד‪.‬‬ ‫•‬
‫לעבור על דוגמת הווקטוריזציה‪.‬‬ ‫•‬
‫•‬

‫ניתן לעבוד בלולאות‪ ,‬ולפעמים ביעילות יתרה אם נבצע הקצאת זיכרון‬ ‫•‬
‫מקדימה לפעולה‬

‫הערות על מאיץ ה‪: JIT‬‬


‫• פועל רק על פעולות לוגיות‪ ,‬תווים‪ ,‬מספרים שלמים ודאבל‪.‬‬
‫• מערכים חד ודו מימדיים‪.‬‬
‫• לולאות בעלי טווח אינדקסי סקלארי‪ if-elseif ,‬בעלי תנאים סקלאריים‪.‬‬
‫• הפונקציות עזר בלולאה הן פונקציות מקוריות של מטלאב‪.‬‬
‫• איכות ההאצה מאטה עם גדילת המערכים‬
‫• אין לעשות פעולת כפל בין הספרה ל‪ ,i-‬יש למספרים מרוכבים כתוב כך ‪.7+2i :‬‬

‫מתי ‪ JIT‬לא יעבוד ‪:‬‬


‫• ‪ ,Uint 64‬תאים‪ ,‬מבנים‪.single ,‬‬
‫• קריאה לקבצי ‪ M‬ו‪.MEX-‬‬
‫• ברגע ששינינו את צורת המשתנה לצורה לא נתמכת בהאצה‪.‬‬

‫לבקש מאדי את ששת הדוגמאות ‪ ,clipping‬ו‪.vfind_scalar & vector -‬‬

‫לייעול שימוש בזיכרון יש לשקול להעביר מטריצות לטיפוס ‪spars‬‬ ‫•‬


‫שיעור ‪ - 12‬עבודה עם קבצים וספריות‬
‫קבצים מקוריים של מטלאב ‪*.m, *.mat *.fig‬‬ ‫•‬
‫קבצים נוספים ‪ :‬טקסט ואקסל‪ ,‬תמונה ‪,‬סאונד ווידאו‪.‬‬ ‫•‬

‫‪ – Save filename optinal_variables‬שמירת סביבת העבודה בקובץ‪ ,‬אם מציינים מציינים משתנים ספציפיים‪ ,‬רק הם נשמרים‪.‬‬
‫ישנה האפשרות לפלאגים הבאים בעת השמירה ‪–ascii –double –tabs -append‬‬ ‫•‬
‫‪ Append‬יכול להתרחש בקובץ ‪ mat‬בלבד‪.‬‬ ‫•‬

‫‪ – Load filename optinal_variables‬טעינת קבצים‪ ,‬המשתנים החדשים יתווספו לקיימים‪ -ascii ,‬הוא הפלאג היחידי השימושי כאן‪.‬‬

‫)'‪ – Exist ('filname_or_variable‬בדיקה האם המשתנה או הקובץ קיימים בסביבת העבודה‪.‬‬

‫לבקש מאדי את ‪.count_files‬‬


‫שיעור ‪ - 13‬אלגברת מערכים‬
‫פעולות איבר‪-‬איבר יכולים להתבצע על מערכים בכל מספר מימדים‪.‬‬ ‫•‬
‫פעולות אלגבריות בין מטריצות יכולות להתבצע עבור מטריצות בלבד )מערכים חד ודו מימדיים(‪.‬‬ ‫•‬
‫כשמכניסים מטריצה‪ ,‬כל עוד לא סוגרים את הסוגר המרובע ניתן ללחוץ אנטר במקום נקודה‪-‬פסיק כדי לרדת שורה‪.‬‬ ‫•‬
‫מטריצה היא מטריצה "טובה" מבחינה נומרית כמה שמספר המצב שלה קרוב לאחד בסקאלה של אחד עד אינסוף‪.‬‬ ‫•‬
‫בפתרון מערכת משוואות עדיף להשתמש באופרטור "\" מאשר לבצע מטריצה הופכית וכפל בווקטור הפתרונות‪.‬‬ ‫•‬
‫אם ווקטור הפתרונות )‪ (A‬הוא ווקטור שורה‪ ,‬ניתן לכתוב '‪.y'/A‬‬ ‫•‬
‫במקרה ויש לנו יותר משוואות מנעלמים המטריצה‬ ‫•‬
‫נפתרת בצורה נומרית בפתרון בעל שגיאה ריבועית‬
‫מינימלית‪.‬‬

‫)‪ – Lsqnonneg (Matrix, Anwser_vector‬פתרון של‬


‫המקרה האחרון תוך השמת תנאי שכל התשובת יהיו‬
‫חיוביות‪.‬‬

‫במקרה שבו יש פחות משוואות ממשתנים‪,‬‬


‫אינסוף פתרונות ‪:‬‬
‫• שימוש ב'\' נותן פתרון עם מספר מקס'‬
‫של אפסים‪ ,‬נורמה מינימלית‪.‬‬

‫‪ – Pinv(matrix)*Answer_vector‬דרך‬
‫נוספת של פתרון שבו לתשובה ערך מינימלי‬
‫של הנורמה‪.‬‬
‫• הפסאודו‪-‬הפיכה של מטריצה‬
‫מלבנית ‪ A‬של יותר עמודות‬
‫משורות‪ ,‬היא מטריצה ‪ B‬כזו‬
‫ש‪ B*A-‬יתן מטריצת יחידה‬
‫ריבועית מהמימד הנמוך יותר‬

‫)‪ – Sparse(matrix‬הפיכת מטריצה רגילה לדלילה‪.‬‬


‫)‪ – Full(matrix‬הפיכת מטריצה דלילה לרגילה‪.‬‬
‫שיעור ‪ - 14‬גרפיקה דו ממדית מתקדמת‬
‫כדי לעשות תת‪-‬גרף ממוקד סביב ערכים מסויימים של ‪ zoom) x,y‬קבוע( נשתמש ב‪ plot-‬אך נבחר רק ערכים חלקיים ממטריצת הארגומנט ‪:‬‬ ‫•‬
‫נגיד ו‪ a-‬מטריצה של ‪ 200‬על ‪ ,2‬הפקודה )‪ plot(a(1:10‬תיצור תת‪-‬גרף חדש‪ ,‬הצף על הגרף הקודם עם מערכת צירים עצמאית של אותם‬
‫ערכים‬

‫)‪ – Areaplot(matrix‬שימוש זהה ל‪ plot-‬רק שכל השטח בין קו הפונקציה לצירים נצבע‪.‬‬

‫)'‪ – Fill(x,y,'c‬ממלא בצבא את הגרף הנוצר‪.‬‬

‫)}‪ – Pie(a,b,{text_cell_array‬מצייר דיאגרמת פאי‪ a ,‬הוא ווקטור של כל החלקים‪ ,‬שעובר נרמול אוטומטי לאחוזים‪ b ,‬הוא ווקטור לוגי באותו גודל‬
‫של ‪ ,a‬כשמופיע בו ‪ 1‬החלק המתאים "נחתך" מהעוגה ונמשך קצת החוצה‪ ,‬מערך התאים שגם הוא באותו גודל מקנה כיתוב לכל חתיכה‪.‬‬

‫)}‪ – Pie3(a,b,{text_cell_array‬כמו הפקודה הקודמת רק שכאן נוצרת אוריינטציה תלת מימדית לפאי‬

‫)‪ – Bar(x,y‬גרף קווים‪ ,‬גם כאן קיים ‪ ,bar3‬ניתן להפוך אותו שיהיה אופקי ע"י ‪ barh‬ו‪.bar3h‬‬

‫היסטוגרמה – נירמול של ערכים בתחום מסויים והצגתם בגרף קווים‬


‫)‪ – Hist(y,n‬היסטוגרמה בעלת ‪ n‬קווים )ברירת המחדל היא ‪ ,(10‬ניתן גם להחליף את ‪ n‬ב‪ x-‬שהוא ווקטור ואז‬
‫ערכיו יהיו מרכז הסביבה של כל קו‪.‬‬

‫)'‪ – Stem(x,y,'linespecs‬גרף "גבעולים"‪.‬‬

‫)‪ – Stairs(x,y,linespecs‬גרף מדרגות‪.‬‬

‫)‪ – Errorbar(x,y,l,u‬גרף רגיל בצירוף קווי שגיאה‪ l ,‬הוא הערך הנמוך‪ u ,‬הוא הגבוהה‪ ,‬אם ברצוננו לעשות קווי‬
‫שגיאה אחידים נחליף את שני האחרונים בערך יחיד שהוא הרדיוס‪.‬‬

‫)'‪ – Polar(ang,radius,'linespec‬גרף פולארי‪ ,‬זוויות ברדיאנים‪.‬‬

‫)‪ – Compass(z‬יצירת גף פולארי של מספרים מרוכבים‪ ,‬כשא כל מספר מיוצג לפי חץ ב"מצפן"‬

‫)‪ – Feather(z‬פריסת הפקודה הקודמת על ציר ‪ x‬בו כל מספר הוא דגימה מספרית‪ ,‬שימושי במספר רב של‬
‫אלמנטים‪.‬‬

‫)‪ – Rose(v‬היסטוגרמה פולארית‪ 20 ,‬קווים בברירת מחדל‪ ,‬טווח פעולה של ‪ 0‬עד ‪.2pi‬‬

‫• להעתקת גרף בצורת קופי‪-‬פייסט‪ ,‬מומלץ להשתמש באופציות ‪copy figure‬‬


‫או לחילופין ‪ copy options‬שנמצאים בתפריט ה‪.edit-‬‬

‫בסוף השיעור יש סט נוסף של פקודות שלא יכלתי להעתיק לכאן‪.‬‬


‫שיעור ‪ - 15‬מחרוזות)‪ ,(strings‬תאים)‪ (cells‬ורשומות)‪(structures‬‬
‫)'‪ – Deblank('string‬מוחקת רווחים מיותרים בסוף השורה‪ ,‬כאשר מפעילים אותה על מטריצה‪ ,‬תמחק רווחים מיותרים בהתאם למילה‬
‫הכי ארוכה בטור‪.‬‬

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


‫)‪Strcmp(s1,s2‬‬ ‫‪ 1‬לוגי אם שתי המחרוזות זהות‬ ‫)‪Strncmp(s1,s2,n‬‬ ‫‪ 1‬לוגי אם ‪ n‬התווים הראשונים זהים‬
‫)‪Strcmpi(s1,s2‬‬ ‫‪ 1‬לוגי אם שתי המחרוזות זהות )לא קייס סנסטיב(‬ ‫)‪Strbcmpi(s1,s2,n‬‬ ‫‪ 1‬לוגי ‪ ...‬זהים )לא קייס סנסטיב(‬
‫)‪Upper(string‬‬ ‫הופך את כל האותיות לגדולות‬ ‫)‪Lower(string‬‬ ‫הופך את כל האותיות לקטנות‬

‫)‪ – Findstr(string,what_to_find‬מציאת רצף תווים במחרוזת‪ ,‬עובד רק על ווקטורים ולא על מטריצות‪ ,‬יש סכנת קבוצה ריקה‪ ,‬קייס‬
‫סנסטיב‪.‬‬

‫)‪ - Strmatch(string, matrix‬מציאת רצף תווים במטריצה‪ ,‬יש סכנת קבוצה ריקה‪ ,‬קייס סנסטיב‪ ,‬מחפש את רצף התווים רק מתחילת‬
‫התא‪.‬‬

‫)‪ – Strrep(s1,s2,s3‬מציאת ‪ s2‬ב‪ s1-‬והחלפתו ב‪.s3-‬‬

‫)}{‪ – (a, b, ….)=Deal(cell_array,‬הפיכת ערכים ממערך תאים למשתנים בודדים‪ ,‬מספר‬


‫המשתנים חייב להיות כמספר התאים‪.‬‬

‫‪ Deblank, strcat, strcmp, strncmp, strrepp‬עובדות הן עם מחרוזות והן עם מערכים‬ ‫•‬


‫של מחרוזות‬

‫מבנים במטלאב זה דומים מאוד למבנים ב‪C-‬‬ ‫•‬


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

‫)‪ – Vector=Cat(1_or_2,struct.field‬הפיכת נתונים‬


‫ממבנה לווקטור‪ 1 ,‬ייתן ווקטור עמודה‪ 2 ,‬ווקטור שורה‪.‬‬

‫}‪ – Cell_array={struct.field‬הפיכת נתונים ממבנה למערך של תאים‪,‬‬


‫נשים לב לסוגריים מסולסלות‪.‬‬

‫)‪ – Fieldnames(struct‬רשימת כל שמות השדות‬


‫במבנה מסויים‬

‫)‪ 1 – Isfield(struct, field_name‬לוגי אם יש שדה בשם הזה במבנה הזה‪.‬‬

‫)‪ – Class(X‬אומר מה סוג המשתנה ‪.X‬‬

‫)‪ – Rmfield(struct, field_name‬מחיקת כל השדות בשם הזה מהמבנה‪.‬‬

‫)‪ – getfield(struct, {n}, field_name‬מחזיר את ערכי הערכים במערך המבנה מהעמודה ה ‪ n‬בשדה מסויים‪.‬‬
‫שיעור ‪ - 16‬גרפיקה תלת ממדית‬
‫)…‪ – Plot3(x1,y1,z1,'color_line_marker',x2‬שרטוט גרף תלת מימדי‪.‬‬

‫)‪Y=y' ,X=x – [X, Y]=meshgrid(x,y‬‬

‫)‪ – Mesh(x, y, z‬גרף רשת תלת מימדי של כל הנקודות‪ ,‬מטלאב יצבע את הגרף בברירת מחדל לפי אדום ‪ Z‬גבוהה‪ ,‬כחול ‪ Z‬נמוך‪.‬‬

‫כברירת מחדל הצורה התלת מימדית אטומה‪ ,‬ניתן לשלוט על כך בעזרת ‪.hidden on\off‬‬ ‫•‬

‫)‪ – Sphere(radius‬יצירת ספירה ברדיוס מסויים‪.‬‬

‫)‪ – Meshc(x,y,z‬בנוסף לגרף הרגיל מתקבלת "מפה טופוגרפית" של הגרף מלמטה‪.‬‬

‫)‪ – Meshz(x,y,z‬בנוסף לגרף הרגיל מתווספת "חצאית" עד למישור מסויים‪ ,‬זה נראה כאילו חתכו את הגרף משאר ה"נוף"‪.‬‬

‫)‪ – Waterfall(x,y,z‬דומה ל ‪ meshz‬אך כאן הקווים אינם רשת‪ ,‬אלא קווים על ציר ‪x‬‬

‫נקודות ‪ NaN‬אינן נראות )חור(‪.‬‬ ‫•‬

‫)‪Surfc(x,y,z‬‬ ‫)‪Surfnorm(x,y,z‬‬

‫)‪ – [c h]=Contour(x,y,z,n‬יצירת מפה טופוגרפית של הפונקציה בעלת ‪ n‬חתכים‪ ,‬מטריצת ‪ c‬מתארת את החתכים‪ ,‬ווקטור ‪ h‬מציין‬
‫את גבהי החתכים‪.‬‬

‫)‪ – Contur3(x,y,z,n‬יצירת מפה טופוגרפית ‪.3D‬‬

‫)‪ – Ribbon(x,y,z‬גרף הדומה ל‪ waterfall‬רק שכאן הקווים הם רצועות היוצרות גרף מדרגה‬

‫)‪ – View(azimuth, elevation‬שינוי נקודת המבט על הגרף‬


‫שיעור ‪ – 17‬צבעים ותאורה‬
‫)‪ – Colormap(matrix‬שינוי צבעי הגרף הצוייר‬
‫שלא בעזרת ‪ ,plot\plot3‬ברירת המחדל היא‬
‫‪ Hsv‬או ‪ jet‬כתלות במה שנבחר ב‪colordef-‬‬

‫‪ – Colorbar‬פקודה ללא ארגומנט‪ ,‬יוצרת סקאלה‬


‫של ספקטרום הצבעים בסכימה הנוכחית‪.‬‬

‫)‪ – Brighten(int‬מכהה או מבהירה ספקטרום‬


‫צבעים‪ ,‬הערכים בין ‪ 1‬ל ‪ -1‬כאשר חיוביים מבהירים‬

‫‪ – Caxis‬מחזירה ערכי מינימום ומקסימום של סקאלת הצבעים‪.‬‬


‫שיעור ‪ - 18‬תמונות וסרטים‬
‫‪ : Indexed image‬כל תא במטריצה התמונה מציין פיקסל‪ ,‬הווקטור בכל פיקסל מציין קואורדינטה על מפת הצבעים‪.‬‬
‫‪ : Intensity image‬תמונה מונוכרומטית תחת בחירת צבע מסויים‪ ,‬ערכי המטריצה )‪ (1-256‬מציינים את עוצמת הצבע‪.‬‬
‫‪ : RGB image‬מערך תלת מימדי של ‪ m:n:3‬או שניתן לחשוב על זה כעל סט של ‪ 3‬מטריצות ‪ -‬מטריצה לכל צבע יסוד‪.‬‬

‫)‪ – Image(matrix‬טעינת מטריצת התמונה )הצגתה לפי מפת הצבעים הנוכחית(‬

‫)‪ – Imagesc(matrix‬התאמת מטריצה התמונה למפת הצבעים הנוכחית )מתיחה של הספקטרום(‬

‫פלאג ‪ image‬של פקות ‪ axis‬גורם לכך שכל פיקסל יהיה מרובע‪ ,‬ובכך מציג את התמונה ביחס וגודל מקוריים‪.‬‬ ‫•‬
‫טווח ‪ uint8‬הוא ]‪ [0 255‬ובמקרה של ‪.[0 65535] uint16‬‬ ‫•‬
‫עבור תמונה יש סטיה של ‪ 1+‬לכל התחום‪.‬‬ ‫•‬
‫כאשר המטריצה בפורמט דאבל הטווח הוא ]‪[0 1‬‬ ‫•‬

‫)‪ – [X map]=imread(filename, format‬קריאת מטריצת תמונה ומפת צבעים‪.‬‬

‫)‪ – Imwrite(matrix, [map], filename, format‬כתיבת מטריצת תמונה ומפת צבעים‪ ,‬פורמטים דחוסים צריכים ערך נוסף בסוף‬
‫הסוגריים המציין את רמת הדחיסה‪.‬‬

‫‪ – struct =getframe‬פקודה ללא ארגומנטים‪ ,‬שומרת את התמונה הנוכחית אל תוך מטריצה‬

‫‪ – Cla‬פקודה ללא ארגומנטים‪ ,‬מנקה את המסך‪.‬‬

‫)‪ – Movie(struct‬הרצת מטריצת תמונות ליצירת סרט‪.‬‬

‫))‪ – [matrix cmap]=frame2im(Movie_matrix(n‬המרת הפריים ה‪ n-‬לתמונה אינדקסית ומפת צבעים‪.‬‬

‫)‪ – Movie_matrix(n)=im2frame(matrix, cmap‬ההפך‪.‬‬


‫שיעור ‪ - 19‬ניתוח נתונים‬
‫כשהנתנונים באים בצורת מטריצה‪ ,‬פעולות סטטיסטיות נעשת על כל עמודה בנפרד‪.‬‬ ‫•‬

‫)‪ – Mean(matrix, flag‬מחשבת את ממוצעי הערכים לפי עמודות )במקרה ולא מציינים פלאג או כשפלאג שווה אחד(‪ ,‬כשהפלאג שווה ‪2‬‬
‫הממוצע נעשה לפי שורות‪.‬‬

‫)‪ – Std(matrix, flag‬מחשבת סטיית תקן‪ ,‬שימוש זהה בפלאג‪.‬‬

‫)‪ – Median(matrix‬לקבלת החציון‪.‬‬

‫)‪ – Cov(matrix‬חישוב שונות משותפת )‪ (covariance‬בין כל זוג עמודות‪.‬‬

‫)‪ – Corrcoef(matrix‬מקדם הקורולציה בין כל זוג עמודות‪.‬‬

‫)‪ – Diff(matrix, n, d‬ההפרש בין כל שני איברים עוקבים במטריצה‪ n ,‬מציין את מספר הפעמיים הרקורסיביים שהפונקציה תפעל‪ d ,‬כמו‬
‫הפלאג בפונקציות הקודמות‪.‬‬
‫• ניתן לבדוק מונוטוניות )ירידה או עליה( של ווקטור ע"י אחידות הסימן ווקטור התשובה ‪.all(vector>0‬‬
‫• כש‪ n-‬שווה ל‪ ,2‬נקבל את גודל המרווחים הכללים בין הערכים‪ ,‬ע"י הפעלת ‪ ,all‬נקבל ‪ 1‬אם זו סדרה חשבונית ו‪ 0-‬אם לא‪.‬‬

‫כשחסרות לנו מדידות נהוג לרשום בתאים המתאימים ‪ ,NaN‬ישנם פונקציות שיתעלמו מהערך וישנם שלא‪ ,‬כדי לסלק אותו ניתן‬ ‫•‬
‫להשתמש ב ‪isnan‬‬
‫שיעור ‪ - 20‬אינטרפולציות נתונים‬
‫)'‪ – Interp1(X,Y,value,'method‬אינטרפולציה חד מימדית‪ ,‬בברירת מחדל ליניארית‪ ,‬קיימים ‪ ,cubic, spline :‬והשיטה ‪nearest‬‬
‫איננה אינטרפולציה‪ ,‬זה בעצם הערך הקרוב ביותר במערכים הנתונים‪ spline ,‬היא השיטה המועדפת‪.‬‬
‫• ‪ Value‬יכול להיות ווקטור‪ ,‬אך הוא חייב להיות מונוטוני‬
‫• הפונקציה יכולה לעבוד על מטריצות לפי עמודות‪.‬‬

‫)‪ – Interp2(x, y, z, X, Y, 'method‬אינטרפולציה דו מימדית‪ ,‬קיימים ‪ cubic‬ו‪ nearest-‬בלבד‪.‬‬

‫ישנה הרחבת אינטרפולציה לכל מספר מימדים ע"י הפקודה‬ ‫•‬


‫‪Interpn‬‬
‫כך גם הרחבה ל‪ meshgrid‬ע"י ‪.ndgrid‬‬ ‫•‬

‫פקודות נוספות לדגימות לא אחידות מנק' זמן ‪.15:00‬‬


‫שיעור ‪ – 21‬פולינומים‬
‫פולינומים מיוצגים ע"י ווקטורי שורה‬ ‫•‬
‫ווקטור הפתרונות תמיד יהיה ווקטור עמודה‬ ‫•‬
‫כתיב הפולינומים הוא כתיב מטריצי‬ ‫•‬

‫)‪ – Answer_vector=roots(polynomial_vector‬נותנת את כל שורשי הפולינום‪.‬‬

‫)‪ – polynomial_vector=poly(Answer_vector‬הפעולה ההפוכה‪ ,‬מציאת הפולינום מווקטור השורשים שלו‪.‬‬

‫)‪ – Vector=conv(poly_vect1, poly_vect2‬כפל פולינומים‪.‬‬

‫בחיבור שני פולינומים יש לדאוג ששני ווקטורי המקדמים יהיו באותו גודל‪ ,‬יש פונקציה שנועם מציע בהרצאה אבל היא מוסיפה‬ ‫•‬
‫איברים משמאל בלבד‪) .‬זמן ‪(4:00‬‬

‫)‪ – [quotient remainder]=deconv(c,b‬חילוק פולינום ‪ c‬בפולינום ‪ ,b‬נקבל ווקטור מנה ווקטור שארית‪.‬‬
‫ווקטור השארית יהיה בגודל ווקטור המחולק‪.‬‬ ‫•‬

‫)‪ – Polyder(polynom‬נותנת נגזרת של הפולינום‪.‬‬

‫)‪ – Polyint(polynom, const‬נותנת אינטגרל של הפולינום‪ ,‬יש לספק קבוע אינטגרציה‪ ,‬ברירת מחדל היא אפס‪.‬‬

‫)‪ – Polyval(polynom, x_values‬איווליואציה של הפולינום‪ ,‬בעצם מכפיל את ווקטור המקדמים בווקטור הנעלמים הנתון‪.‬‬

‫פונקציות רציוניליות )מבוססות חלוקת פולינומים(‬


‫)‪ – [nn, dd]=polyder(numerator, denominator‬גזירת פונקציה רציונלית‪ num ,‬הוא פולינום המונה‪ de ,‬הוא פולינום המכנה‪,‬‬
‫ומקבלים פונקציה רציונלית‪ ,‬את מקדמי פולינומם המונה והמכנה‪.‬‬

‫)‪ – [r, p, k]=residue(n, d‬אם הארגומנטים הם ווקטורי שורה‪ ,‬הפונקציה מפרקת פונקציה רציונלית לשברים חלקיים‪ r ,‬ווקטורי מונה‪p ,‬‬
‫ווקטורי מכנה‪ k ,‬ווקטור שארית‪.‬‬
‫אם הארגומנטים הם ווקטורי עמודה‪ ,‬היא מחזיקה פונקציה רציונלית‪.‬‬

‫)‪ – Polyfit(values1, values2, order‬לוקחת שתי סטים של מדידות ומתאימה להם פולינום מסדר שנבחר‪.‬‬

‫ביאור של הדוגמא ‪:‬‬


‫‪ – x‬סט ערכי מדידה ראשון‪.‬‬
‫‪ – y‬סט ערכי מדידה שניה‪.‬‬
‫‪ – n‬סדר הפולינום‪.‬‬
‫‪ – p‬הפולינום החדש שהתקבל‪.‬‬
‫‪ – xi‬נקודות בדיקה של הפולינום החדש‪.‬‬
‫‪ – yi‬שווי הפולינום בנק' הבדיקה‪.‬‬
‫שיעור ‪ - 22‬אנאליזה נומרית‬
‫)‪ – Area=trapz(x,y‬ביצוע אינטגרל טרפזואידלי )הטרפז שלמדנו בחדו"א(‪.‬‬

‫)‪ – Quad('function', from_value, to_value‬אינטגרל סמפסוני‪ ,‬טולרנס )תחום דיוק(‬


‫ברירת מחדל ‪ ,1e-6‬ניתן להגדיר טולרנס משלנו‪.‬‬

‫)‪ – Dblquad('function', x_min, x_max, y_min, y_max‬אינטגרל דו מימדי על שטח מלבני‪.‬‬


‫• הפונקציות שמכניסים ל ‪ dblquad, quad, quadl‬צריכה להיות מסוגלת לטפל בארגטמנטים‬
‫ווקטוריים‪ ,‬כלומר עבור ווקטור ערכי ‪ x‬תתן ווקטור ערכי ‪.y‬‬

‫כשיש רעש במדידות יש בעיתיות בקירוב האנליטי )ע"י ‪ (diff‬של הנגזרת הפולינומית לנגזרת העצמה‪,‬‬ ‫•‬
‫הבעיה היא בעצם בנגזרת עצמה‪ ,‬הקירוב נותן לנו תוצאה איכותית יותר‪.‬‬
‫מצד שני כשמפעילים את ‪ diff‬לקירוב פונקציה ממדידות רבות ואין רעש מדידה התוצאה הרבה יותר טובה‪.‬‬ ‫•‬
‫המסקנה‪ ,‬היא שאם יש רעש מדידה נעשה קירוב ע"י פולינום ואותו נגזור‪.‬‬ ‫•‬

‫פתרון נומרי – תנאי התחלה‬


‫משוואה קשיחה ‪ stiff‬פתרונות עם קבועי זמן מאוד שונים זה מזה‬ ‫•‬

‫פירוט המשוואה הנתונה לשיטת המישדי"פ לפיה נפעל‪.‬‬ ‫‪.1‬‬


‫כתיבת פונקציה שמיישמת את סט המשוואה‬ ‫‪.2‬‬
‫המפורשות של הבעיה‪ ,‬הארגומנטים הם סקלר ‪ ,t‬והיא‬
‫מחזירה וקטור עמודה של ‪dy‬‬
‫לסולבר שבחרנו נכניס כארגומנטים את‬ ‫‪.3‬‬
‫‪ -‬שם הפונקציה שבנינו‪.‬‬
‫‪ -‬מהלך הזמן לפתרון‪.‬‬
‫‪ -‬תנאי התחלה‪.‬‬
‫שירטוט גרף במקרה הצורך‬ ‫‪.4‬‬

‫סוף שלב ראשון‬

‫שלב שני‬

‫שלב שלישי‬
‫הערות על הדוגמא ‪:‬‬
‫• ‪ Ode45‬נותן פתרון עם אינטרוולי זמן לא קבועים‪.‬‬
‫• אם בכל מקרה נרצה פתרון עם מרווחי זמן קבועים נוכל להשתמש‬
‫ב ‪tspan‬‬
‫חיפוש אפסים‬
‫)‪ – Fzero('function', guess‬מוצאת את הערכים בהם הפונקציה הנתונה מתאפסת‪ ,‬עלינו לנחש ערכים סביבם אנחנו רוצים למצוא את‬
‫ההתאפסות‪ ,‬הפונקציה מחזירה תשובה יחידה לפי הסביבה‪ ,‬לכן אם ברצוננו כמה פתרונות‪ ,‬עלינו להריץ את הפונקציה כמה וכמה‬
‫פעמים עם ניחושים מתאימים שונים‪.‬‬
‫• סיכוי מאוד קטן שנקבל ‪ 0‬מדוייק‪ ,‬לרוב נקבל מספרים קטנים מאוד מאחר וזהו חישוב נומרי‪.‬‬

‫חיפוש מינ' מקס' מקומיים‬


‫)‪ – [xmin value]=fminbnd('function',from,to‬מציאת מינימום לוקאלי‪ ,‬יש לספק טווח חיפוש לעבודת הפונקציה‪.‬‬

‫)‪ – [xmax -value]=fminbnd('-function(x)',from,to‬מציאת מקסימום לוקאלי‪ ,‬בדרך עוקפת‪.‬‬


‫• חשוב לציין לפי איזה משתנה אנחנו מחפשים את המקסימום‪.‬‬

‫)‪ – Fminsearch('function', vector‬חיפוש מינימום בפונקציה רב מימדית‪ ,‬מימד הפונקציה הוא כמימד הווקטור בארגומנט‪ ,‬שהוא‬
‫כמפון מתאים למימד הפונקציה‪ .‬הווקטור מציין נקודת ניחוש עבורה אנחנו רוצים לקבל מינימום מקומי‪.‬‬
‫שיעור ‪ - 23‬מתמטיקה סימבולית‬
‫‪ – Syms variable‬הגדרת משתנה או משתנים סימבוליים‬

‫)‪ – Pretty(symbolic_function‬הצגה טבעית יותר של פונקציה סימבולית‬

‫)‪ – [numerator, denominator]=numden(rational_function‬פירוק פונקציה רציונלית לפונקציות מקוריות‪.‬‬


‫• עובדת גם כל מטריצות‪ ,‬ונותנת בהתאמה מטריצת פונקציות מחלקת ומחולקת‪.‬‬

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

‫)‪ – function_of_function=compose(f,g‬יוצר פונקציה מורכבת‪ ,f(g) ,‬מציב בכל מקום שיש משתנה סימבולי ב‪ f‬את הפונציה ‪.g‬‬

‫)‪ – vector=Sym2poly(symbolic_function‬הפיכת פונקציה סימבולית לפולינום במטלאב‪ ,‬בעצם יוצרת ווקטור מקדמים‪.‬‬

‫)‪ – New_function=subs(function,old_variable, new_variable‬החלפת משתנה בפונקציה סימבולית‪.‬‬


‫• המשתנה החדש יכול להיות גם ווקטור סימבולי‪ ,‬מה שיהפוך פונקציה סקלארית סימבולית לווקטורית סימבולית‪.‬‬
‫• ניתן להחליף משתנה סימבולי במספר‪ ,‬ולהפוך את הפונקציה למפורשת ע"י הפעלת פונקציית ‪.double‬‬

‫)…'‪ – Solution=Solve('symbolic_function1‬פתרון מערכת משוואות סימבוליות או משוואות מפורשות )הכתובות כסטרינג(‪ ,‬כמובן‬
‫שצריך מספר משוואות כמספר הנעלמים‪ ,‬נקבל ווקטור פתרונות בגודל מעלת המשוואות‪.‬‬

‫גזירה ואינגרציה של פונקציה סימבולית זהה לנגזרת של פולינום‪ ,‬נקבל פתרון אנליטי‪.‬‬ ‫•‬

‫)‪ – New_function=Simplify(symbolic_function‬ניסיון לפישוט ביטוי ע"י זהויות‪ ,‬כינוס איברים וכדומה‪.‬‬

‫קיימת אפשרות לפתרון סימבולי של מישדי"פ‪ ,‬כדאי לחקור את ה‪ toolbox‬והעזרה בנושא זה‪.‬‬ ‫•‬
‫שיעור ‪ - 24‬תוויות גרפיקה ויצירת ממשק הגרפי‬
‫‪ – gcf‬מחזירה את התווית של הגרף הנוכחי‪.‬‬

‫‪ – Gca‬מחזירה את התווית של הצירים הנוכחיים‪.‬‬

‫‪ – Gco‬מחזירה את התווית של האובייקט הנוכחי‪.‬‬

‫)‪ – Line(x,y‬הוספת קו חדש לגרף‪.‬‬

‫כל פקודות הגרפים מחזירת את התוויות של הקווים‪.‬‬ ‫•‬

‫)'‪ – Get(handle,'property_name‬מחזיר את כל המאפיינים וערכם‬


‫של האובייקטים הגרפיים‪ ,‬בדוגמא קיבלנו ווקטור נומרי של מיקום החלון‪,‬‬
‫צורת ווקטור זו היא )גובה‪ ,‬אורך‪ ,‬מיקום על ציר הגובה של הנק' השמאלית‬
‫התחתונה‪ ,‬מיקום על ציר האורך של הנק' השמאלית התחתונה(‪.‬‬

‫)‪ - Set(handle, 'property_name', relevant values‬בהינתן תווית בלבד‪,‬‬


‫מחזיר את רשימת המאפיינים הניתנים לשינוי ואפשרויות השינוי שלהם‪.‬‬
‫בהינתן תווית ומאפיין‪ ,‬נותן את הפלאגים האפשריים לשינוי‪.‬‬
‫בהינתן כל הארגומנטים‪ ,‬משנה את המאפיין המדובר לפי הערכים‪.‬‬

‫במקרה ואנו רוצים להציג אנימצייה גרפית נעבוד לפי העקרונות הבאים ‪:‬‬
‫‪ .1‬בניית תוכנית ובתוכה לולאה רלוונטית‬
‫שאחראית על הגרפיקה‪.‬‬
‫‪ .2‬לפני תחילת הלולאה נשתמש בפקודת‬
‫‪ line‬בכדי לצייר את הפריים הראשון‪ ,‬ולקבל‬
‫את התווית‪ ,‬בנוסף‪ ,‬נשנה את מאפיין‬
‫‪ erasemode‬למצב ‪.xor‬‬
‫‪ .4‬בזמן הלולאה בכדי לעדכן את הגרף נשתמש ב ‪ set‬על מנת לשנות את המאפיינים ‪ xdata ydata‬ובסוף השורה נתן את פקודת‬
‫‪.drawnow‬‬
‫‪ .5‬נתאים את מהירות ריצת הגרפיקה ע"י שימוש בפקודת ‪.pause‬‬

‫בניית ‪GUI‬‬
‫‪ – Guide‬ללא ארגומנט‪ ,‬פותחת את חלון השליטה לבניית ממשק גרפי‪.‬‬

‫כדי לראות את כל השדות האפשריים לשינוי המאוכסנים ב ‪ struct‬בשם ‪ handle‬פשוט נכתוב ‪.handle‬‬ ‫•‬
‫כעת נכנס ל‪ M-file‬שמטלאב נוצר ונוכל לערוך אותה כמו פונקציה לכל דבר‪.‬‬ ‫•‬
‫הרבה יותר נוח לעבוד עם הממשק הגרפי‪ ,‬ראה שיעור‪.‬‬ ‫•‬

You might also like