Professional Documents
Culture Documents
פקודות מתמטיות
פקודה תיאור
ערך מוחלט abs
Angleזווית של מספר מרוכב
החלק אממשי של מספר מרוכב real
imagהחלק הדמיוני של מספר מרוכב
משנה את המספר המרוכב לצמוד שלו )משנה את סימן החלק הדמיוני( Conj
הערות :
• ברירת המחדל למספר היא מסוג .double
• זוויות תמיד נמדדות ברדיאנים.
."j" " אוI" חלקים דימיוניים של מספרים מרוכבים יכולים להיות על ידי האותיות •
ערכים אלה יכולים להדרס ויחזרו, מאחר והם קבועי עבודה,j ,i ,pi בהגדרת משתנים רצוי לא להגדיר למשל את המשתנים •
.clear all אוclear לערכם המקורי לאחר פקודת
.פסיק-ניתן לכתוב כמה פקודות בשורה אחת ע"י שימוש בפסיק או נקודה •
. נקודות3 "ניתן לשבור שורות ארוכות עם,משהו שלא הבנתי •
.Ctrl-C הפסקת תוכנית ע"י •
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.
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"
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)
– Randפקודה שיוצרת מערך בגודל הארגומנט של מספרים אקראיים )בפילוג אחיד – תוחלת חצי( בין אפס לאחד.
) – Linspace(begin,end,segmaentsנותן מספר segmentsשל ערכים הגדלים באופן שווה בין ערכי הגבול וכוללים אותם.
)" – Logspace("log10begin","log10end","segmentsדומה לפקודה הקודמת ,רק שהסקאלה היא לוגריתמית וכאן נותנים את הלוגריתם של
הנקודות.
) - Array(from:toניתן להשתמש באופרטור נקודותיים כדי לשלוף ערכים של תת-מערך from ,לא חייב להיות המיקום ההתחלתי ו to-לא חייב
להיות המיקום הסופי.
' :אופרטור שניתן לשים אחרי הסוגריים המגדירים מערך והוא גורם לפעולת טרנספוז ,משחלף את הווקטור שורה לעמודה.
הערה :במספרים מרוכבים האופרטור גם משחלף וגם מחליף למספר צמוד )מוסיף מינוס לאיבר המדומה( ,כדי להמנע מהצימוד יש להוסיף
נקודה לפני האופרטור ,כך .' :
ניתן לפנות לערך במטריצה ע"י הכנסת הקואורדינציה שלו או ע"י הכנסת המיקום הווקטורי שלו ,שהוא מספר העמודה שלו פחות אחד כפול
מספר השורות כל זה ועוד מספר השורה שהוא נמצא בה.column*LINE+line ,
אם כותבים את התו " ":בארגומנט למיקום האיבר התוצאה תהיה כל
תחום האיברים ,לדוגמא ][=) array(row,:היא פקודה למחיקת השורה
הראשונה במערך.
במקרה והגדרנו מערך בעל nXmאיברים ונרצה להכניס אליו וקטור גדול מ n-או mנקבל הודעת שגיאה. •
) – [sorted, indexed]=sort(array,dimensionמיון המערך לפי המימד ה dimension-שלו ,מימד ראשון הוא טור ,שני שורה ,וכו'
) – Find(abs(x)>1מחזיר ווקטור של האינדקסים של האיברים שעונים לתנאי הלוגי בארגומנט ,לחילוץ הערכים הללו ניתן לשים את הווקטור המוחזר
כארגומנט למערך.
נעדיף למיין מטריצות לווקטור ולא למערכים ,לכן נעשה השמה למשתנה בודד. •
פונקציות maxו min-פועלות דומה לפונקציית .sort •
עוד כמה פונקציות שימושיות : פעולה בין סקלאר ומטריצה :
עובד עם כל הפעולות האריתמטיות
כדי לבצע פעולות איבר לאיבר בין סקלאר ומטריצה ,יש לשים לפני האופרטור האריתמטי נקודה ./ .* .^ : •
מימדי המטריצות חייבים להתאים. •
מימדי מטריצת התוצאה זהה למימדי המטריצות המקוריות. •
) – Plot(x1,y1,x2,y2…,מצייר גרף ,כל הארגומנטים הם מערכים 8 ,הזוגות הראשונים יהיו בעלי צבעים שונים.
על מנת לעשות גרפים בעלי ציר xמשותף ) xהוא בעצם ווקטור( יש להכין מטריצת yבעלת שתי עמודות. •
נשים לב שכל עמודה היא גרף אחר ,אם הינו מיצרים מטריצה בעלת שתי שורות הינו מקבלים הרבה גרפים ליניאריים. •
אם שני הגרפים בעלי xשונה צריך מטריצה ל x-ומטריצה ל.y- •
– Holdפונקציה בעלת פלאג ,on\offכשהיא פועלת כל plotשנעשה יהיה על-גבי אותה מערכת צירים.
- Gridפונקציה בעלת פלאג ,on\offכשהיא פועלת הגרף משובץ.
במקרה של holdכל הקווים ישורטטו לפי ברירת המחדל של מטלאב ,יש לדאוג להבדלים בין כל גרף. •
אם לא נקבע איזה סוג קו אנחנו רוצים לא יהיה קו שמחבר את הנקודות. •
- Plotyyמצייר על אותה מערכת צירים שני גרפים ,ומעוות את סקאלת yכך שכל גרף יראה בקנה מידה מתאים מהציר המקורי שלו
כאשר פקודות לגרף נעשות באותה שורה העיבוד שלהן נעשה סימולטנית וחוסך זמן. •
בהרצת m-fileעיבוד הגרף נעשה בסוף ההרצה. •
ניתן להתגבר על זה ע"י פקודת .drawnow •
לעבור ב helpעל .break, case, else, elseif, end, for, if, otherwise, while :
שיעור - 6מערכי תאים
מערכי תאים – מערך מוכלל בו כל איבר יכול להיות מכל סוג וגודל שהוא. •
כדאי להבדיל בשמות המשתנים בין מערכי תאים ומערכים רגילים. •
השימוש במערכי תאים יהיה עם סוגריים מסולסלות ,סוגריים חיצוניות. •
לא להכניס תאים למשתנים קיימים. •
הסוגריים במסולסלות יכולים להופיע משמאל לסימן ההצבה •
במקרה והיה שימוש במשתנה לא מאותחל לא נקבל תשובה )קבוצה ריקה?(. •
)– Evalc(string
שיעור - 7פעולות לוגיות
המשמעות הלוגית של מספרים היא בדיוק כמו בשפת סי. •
להבדיל משפת סי ,לא שווה מסומן כך =~ ,באותו מטבע משמעות ~ היא )!( Not •
כדי לעשות פעולות השוואה לוגיות בין מערכים הם צריכים להיות באותו גודל והפעולה תעשה איבר-איבר. •
וגם ,& -או | - •
NaNכפול סקלאר = NAN •
NaN==NaN : =0 •
NaN~=NaN : =1 •
לכן הדרך הטובה ביותר לבדוק אם יש לנו. •
NaNהיא באמצעות )isnan(a
Inf == Inf : =1 •
][= []==[] : •
לכן נשתמש בפונקציה ).isempty(a •
הארגומנטים לא מועתקים לסביבת העבודה של הפונקציה אלא אם חל בהם שינוי במהלך פעולת הפונקציה. •
אם לא הוצב ערך למשתנה " "variableלא יהיה פלט לפונקציה ,לכן הצבת תשובת הפונקציה למשתנה בסביבת העבודה תגרור •
שגיאה.
כתיבת המשתנים Vararginו varargout-מקנים דינמיות לקבלת הארגומנטים ,או לחילופין להחזרת משתנים ,מעבר למספר •
סופי קבוע.
כדי לדבג פונקציה ניתן להשתמש בפונקציית keyboardשהזכרנו באחד השיעורים הראשונים. •
" - Global "variable_nameלהכרזת משתנה גלובלי או ייבוא משתנה גלובלי מסביבת עבודה אחרת.
" persistent "variable_nameיצירת או יבוא משתנה עקבי ,משתנה זה דומה לגלובלי רק שסביבת עבודתו מוגבלת לסביבה •
אחת.
משתנה כזה שרץ בפעם הראשונה הוא ריק ,קבוצה ריקה. •
)' – Evalin('string1','string2גורם לביטוי לעבור איווליואציה בכמה סביבות ).(base, caller, expression, try, catch
)" – Assignin("workspace", "variable", "valueהצבת הערך למשתנה בסביבה אחרת ).(caller, base
הפונקציה הראשית ב m-fileהיא הפונקציה הראשונה ,כל פונקציה שתכתב בהמשך הקובץ תהיה .sub-function •
Sub-functionsיכולות לקרוא אחת לשניה •
לכל פקודה ניתן לקרוא בצורת פונקציה ,כך ורק כך ,ניתן להציב את תשובותיהם למשתנה או מבנה. •
פקודות מקבלים ארגומנטים כסטרינגים ,ובמקרה של אריתמטיקה יבוצעו פעולות על ערכי ה ASCIIשלהם. •
שיעור - 10טיפול בבאגים M-files
שתי הבאגים הנפוצים ביותר במאטלאב הם כאשר כתוצאה מחישוב במהלך התוכנית מתקבל NaNאו מערך ריק. •
במהלך דיבאג נוריד נקודה-פסיק מסוף השורה. •
פירוט משתנים במהלך ההרצה. •
פקודת ,keyboardסיומה על ידי הפקודה .return •
הפיכת הפונקציה לסקריפט ואז ה workspace-מתאחד. •
איפה שיש נקודה אדומה השורה עוד לא בוצעה. •
ניתן לעמוד על המשתנה ואז ערכו יופיע בפופ-אפ. •
כדי לראות תלות בין הפונקציה שלנו לפונקציות וסקריפטים אחרים נוכל להשתמש בפקודת ,depfunאופן השימוש שלה לא ברור •
בהרצאה
כדאי לאחסן חישובים במשתנים ולא לעשוות חישובים חוזרים במהלך העבודה ,מטעמי חיסכון בזמן ויעילות עבודת המחשב. •
שימוש בווקטורים יכול ליעל את התכנות. •
– Profile on\off\reportתחילת וסיום תהליך ה ,profilingתזמון תהליכים שוטף במהלך הרצת הפונקציה.
שיעור - 11תכנות נכון ויעיל במטלאב
הגורמים ליעילות התוכנית :
כל שורת קוד עוברת סוג של קומפילציה בזמן ביצועה •
יש להמנע מלופים. •
וקטוריזציה – לזה מטלאב נועד. •
לעבור על דוגמת הווקטוריזציה. •
•
ניתן לעבוד בלולאות ,ולפעמים ביעילות יתרה אם נבצע הקצאת זיכרון •
מקדימה לפעולה
– Save filename optinal_variablesשמירת סביבת העבודה בקובץ ,אם מציינים מציינים משתנים ספציפיים ,רק הם נשמרים.
ישנה האפשרות לפלאגים הבאים בעת השמירה –ascii –double –tabs -append •
Appendיכול להתרחש בקובץ matבלבד. •
– Load filename optinal_variablesטעינת קבצים ,המשתנים החדשים יתווספו לקיימים -ascii ,הוא הפלאג היחידי השימושי כאן.
– Pinv(matrix)*Answer_vectorדרך
נוספת של פתרון שבו לתשובה ערך מינימלי
של הנורמה.
• הפסאודו-הפיכה של מטריצה
מלבנית Aשל יותר עמודות
משורות ,היא מטריצה Bכזו
ש B*A-יתן מטריצת יחידה
ריבועית מהמימד הנמוך יותר
) – Areaplot(matrixשימוש זהה ל plot-רק שכל השטח בין קו הפונקציה לצירים נצבע.
)} – Pie(a,b,{text_cell_arrayמצייר דיאגרמת פאי a ,הוא ווקטור של כל החלקים ,שעובר נרמול אוטומטי לאחוזים b ,הוא ווקטור לוגי באותו גודל
של ,aכשמופיע בו 1החלק המתאים "נחתך" מהעוגה ונמשך קצת החוצה ,מערך התאים שגם הוא באותו גודל מקנה כיתוב לכל חתיכה.
)} – Pie3(a,b,{text_cell_arrayכמו הפקודה הקודמת רק שכאן נוצרת אוריינטציה תלת מימדית לפאי
) – Bar(x,yגרף קווים ,גם כאן קיים ,bar3ניתן להפוך אותו שיהיה אופקי ע"י barhו.bar3h
) – Errorbar(x,y,l,uגרף רגיל בצירוף קווי שגיאה l ,הוא הערך הנמוך u ,הוא הגבוהה ,אם ברצוננו לעשות קווי
שגיאה אחידים נחליף את שני האחרונים בערך יחיד שהוא הרדיוס.
) – Compass(zיצירת גף פולארי של מספרים מרוכבים ,כשא כל מספר מיוצג לפי חץ ב"מצפן"
) – Feather(zפריסת הפקודה הקודמת על ציר xבו כל מספר הוא דגימה מספרית ,שימושי במספר רב של
אלמנטים.
) – Rose(vהיסטוגרמה פולארית 20 ,קווים בברירת מחדל ,טווח פעולה של 0עד .2pi
) – Findstr(string,what_to_findמציאת רצף תווים במחרוזת ,עובד רק על ווקטורים ולא על מטריצות ,יש סכנת קבוצה ריקה ,קייס
סנסטיב.
) - Strmatch(string, matrixמציאת רצף תווים במטריצה ,יש סכנת קבוצה ריקה ,קייס סנסטיב ,מחפש את רצף התווים רק מתחילת
התא.
) – getfield(struct, {n}, field_nameמחזיר את ערכי הערכים במערך המבנה מהעמודה ה nבשדה מסויים.
שיעור - 16גרפיקה תלת ממדית
)… – Plot3(x1,y1,z1,'color_line_marker',x2שרטוט גרף תלת מימדי.
) – Mesh(x, y, zגרף רשת תלת מימדי של כל הנקודות ,מטלאב יצבע את הגרף בברירת מחדל לפי אדום Zגבוהה ,כחול Zנמוך.
כברירת מחדל הצורה התלת מימדית אטומה ,ניתן לשלוט על כך בעזרת .hidden on\off •
) – Meshz(x,y,zבנוסף לגרף הרגיל מתווספת "חצאית" עד למישור מסויים ,זה נראה כאילו חתכו את הגרף משאר ה"נוף".
) – Waterfall(x,y,zדומה ל meshzאך כאן הקווים אינם רשת ,אלא קווים על ציר x
)Surfc(x,y,z )Surfnorm(x,y,z
) – [c h]=Contour(x,y,z,nיצירת מפה טופוגרפית של הפונקציה בעלת nחתכים ,מטריצת cמתארת את החתכים ,ווקטור hמציין
את גבהי החתכים.
) – Ribbon(x,y,zגרף הדומה ל waterfallרק שכאן הקווים הם רצועות היוצרות גרף מדרגה
פלאג imageשל פקות axisגורם לכך שכל פיקסל יהיה מרובע ,ובכך מציג את התמונה ביחס וגודל מקוריים. •
טווח uint8הוא ] [0 255ובמקרה של .[0 65535] uint16 •
עבור תמונה יש סטיה של 1+לכל התחום. •
כאשר המטריצה בפורמט דאבל הטווח הוא ][0 1 •
) – Imwrite(matrix, [map], filename, formatכתיבת מטריצת תמונה ומפת צבעים ,פורמטים דחוסים צריכים ערך נוסף בסוף
הסוגריים המציין את רמת הדחיסה.
) – Mean(matrix, flagמחשבת את ממוצעי הערכים לפי עמודות )במקרה ולא מציינים פלאג או כשפלאג שווה אחד( ,כשהפלאג שווה 2
הממוצע נעשה לפי שורות.
) – 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יכול להיות ווקטור ,אך הוא חייב להיות מונוטוני
• הפונקציה יכולה לעבוד על מטריצות לפי עמודות.
בחיבור שני פולינומים יש לדאוג ששני ווקטורי המקדמים יהיו באותו גודל ,יש פונקציה שנועם מציע בהרצאה אבל היא מוסיפה •
איברים משמאל בלבד) .זמן (4:00
) – [quotient remainder]=deconv(c,bחילוק פולינום cבפולינום ,bנקבל ווקטור מנה ווקטור שארית.
ווקטור השארית יהיה בגודל ווקטור המחולק. •
) – Polyint(polynom, constנותנת אינטגרל של הפולינום ,יש לספק קבוע אינטגרציה ,ברירת מחדל היא אפס.
) – Polyval(polynom, x_valuesאיווליואציה של הפולינום ,בעצם מכפיל את ווקטור המקדמים בווקטור הנעלמים הנתון.
) – [r, p, k]=residue(n, dאם הארגומנטים הם ווקטורי שורה ,הפונקציה מפרקת פונקציה רציונלית לשברים חלקיים r ,ווקטורי מונהp ,
ווקטורי מכנה k ,ווקטור שארית.
אם הארגומנטים הם ווקטורי עמודה ,היא מחזיקה פונקציה רציונלית.
) – Polyfit(values1, values2, orderלוקחת שתי סטים של מדידות ומתאימה להם פולינום מסדר שנבחר.
כשיש רעש במדידות יש בעיתיות בקירוב האנליטי )ע"י (diffשל הנגזרת הפולינומית לנגזרת העצמה, •
הבעיה היא בעצם בנגזרת עצמה ,הקירוב נותן לנו תוצאה איכותית יותר.
מצד שני כשמפעילים את diffלקירוב פונקציה ממדידות רבות ואין רעש מדידה התוצאה הרבה יותר טובה. •
המסקנה ,היא שאם יש רעש מדידה נעשה קירוב ע"י פולינום ואותו נגזור. •
שלב שני
שלב שלישי
הערות על הדוגמא :
• Ode45נותן פתרון עם אינטרוולי זמן לא קבועים.
• אם בכל מקרה נרצה פתרון עם מרווחי זמן קבועים נוכל להשתמש
ב tspan
חיפוש אפסים
) – Fzero('function', guessמוצאת את הערכים בהם הפונקציה הנתונה מתאפסת ,עלינו לנחש ערכים סביבם אנחנו רוצים למצוא את
ההתאפסות ,הפונקציה מחזירה תשובה יחידה לפי הסביבה ,לכן אם ברצוננו כמה פתרונות ,עלינו להריץ את הפונקציה כמה וכמה
פעמים עם ניחושים מתאימים שונים.
• סיכוי מאוד קטן שנקבל 0מדוייק ,לרוב נקבל מספרים קטנים מאוד מאחר וזהו חישוב נומרי.
) – Fminsearch('function', vectorחיפוש מינימום בפונקציה רב מימדית ,מימד הפונקציה הוא כמימד הווקטור בארגומנט ,שהוא
כמפון מתאים למימד הפונקציה .הווקטור מציין נקודת ניחוש עבורה אנחנו רוצים לקבל מינימום מקומי.
שיעור - 23מתמטיקה סימבולית
– Syms variableהגדרת משתנה או משתנים סימבוליים
) – function_of_function=compose(f,gיוצר פונקציה מורכבת ,f(g) ,מציב בכל מקום שיש משתנה סימבולי ב fאת הפונציה .g
) – vector=Sym2poly(symbolic_functionהפיכת פונקציה סימבולית לפולינום במטלאב ,בעצם יוצרת ווקטור מקדמים.
)…' – Solution=Solve('symbolic_function1פתרון מערכת משוואות סימבוליות או משוואות מפורשות )הכתובות כסטרינג( ,כמובן
שצריך מספר משוואות כמספר הנעלמים ,נקבל ווקטור פתרונות בגודל מעלת המשוואות.
גזירה ואינגרציה של פונקציה סימבולית זהה לנגזרת של פולינום ,נקבל פתרון אנליטי. •
קיימת אפשרות לפתרון סימבולי של מישדי"פ ,כדאי לחקור את ה toolboxוהעזרה בנושא זה. •
שיעור - 24תוויות גרפיקה ויצירת ממשק הגרפי
– gcfמחזירה את התווית של הגרף הנוכחי.
במקרה ואנו רוצים להציג אנימצייה גרפית נעבוד לפי העקרונות הבאים :
.1בניית תוכנית ובתוכה לולאה רלוונטית
שאחראית על הגרפיקה.
.2לפני תחילת הלולאה נשתמש בפקודת
lineבכדי לצייר את הפריים הראשון ,ולקבל
את התווית ,בנוסף ,נשנה את מאפיין
erasemodeלמצב .xor
.4בזמן הלולאה בכדי לעדכן את הגרף נשתמש ב setעל מנת לשנות את המאפיינים xdata ydataובסוף השורה נתן את פקודת
.drawnow
.5נתאים את מהירות ריצת הגרפיקה ע"י שימוש בפקודת .pause
בניית GUI
– Guideללא ארגומנט ,פותחת את חלון השליטה לבניית ממשק גרפי.
כדי לראות את כל השדות האפשריים לשינוי המאוכסנים ב structבשם handleפשוט נכתוב .handle •
כעת נכנס ל M-fileשמטלאב נוצר ונוכל לערוך אותה כמו פונקציה לכל דבר. •
הרבה יותר נוח לעבוד עם הממשק הגרפי ,ראה שיעור. •