Movatterモバイル変換


[0]ホーム

URL:


לדלג לתוכן
ויקיפדיההאנציקלופדיה החופשית
חיפוש

MATLAB

מתוך ויקיפדיה, האנציקלופדיה החופשית
MATLAB


MATLAB בגרסה R2015b
תצוגה תלת־ממדית של הפעלת הפונקציה sinc
תצוגה תלת־ממדית של הפעלת הפונקציה sinc
מפתחThe MathWorks
מחזור חיים1984–הווה (כ־42 שנים)עריכת הנתון בוויקינתונים
גרסה אחרונהR2025b (17 בספטמבר 2025)עריכת הנתון בוויקינתונים
מערכת הפעלהרבות
נכתבה בשפותC (שפת תכנות),Fortran,C++,ג'אווה (שפת תכנות)עריכת הנתון בוויקינתונים
סוג רישיוןEULA
קטגוריהתוכנת חישוב
MATLAB product page
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

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

היסטוריה

[עריכת קוד מקור |עריכה]

השם MATLAB הואראשי תיבות של המילים "מעבדת מטריצות" - "matrixlaboratory" באנגלית. MATLAB נכתבה בסוףשנות ה-70 על ידי קליב מולר, אז ראש המחלקה למדעי המחשב באוניברסיטת ניו מקסיקו. מטרת התוכנית הייתה מתן גישה לספריות המתמטיותLINPACK ו-EISPACK ללא צורך ללמודFortran. התוכנה נפוצה במהירות באוניברסיטאות ובקהילת חוקריהמתמטיקה השימושית. ג'ק ליטל, מהנדס, גילה את התוכנה כאשר ביקר את מולר באוניברסיטת סטנפורד במהלך1983. ליטל הכיר בפוטנציאל המסחרי, וצירף את מולר וסטיב באנגרט. הם כתבו מחדש את התוכנה בשפת C (ספריות משוכתבות אלו ידועות כ-JACKPAC) וייסדו את Mathworks ב-1984, על מנת להמשיך את פיתוחה.

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

יכולות

[עריכת קוד מקור |עריכה]

מתמטיקה וחישוביות

[עריכת קוד מקור |עריכה]

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

סביבת פיתוח

[עריכת קוד מקור |עריכה]

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

הצגת נתונים

[עריכת קוד מקור |עריכה]

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

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

התוכנה כוללת מספרממשקי תכנות יישומים עבור גישה לספריות הנכתבות בשפות תכנות אחרות (באמצעות קובצי MEX אוDLL) ללקוחותCOM וממשקי Web, כמו גם אביזרים היקפיים המתקשרים ישירות עם התוכנה באמצעותהממשק הטורי.

חבילות כלים

[עריכת קוד מקור |עריכה]

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

תחביר

[עריכת קוד מקור |עריכה]

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

משתנים מוגדרים עםאופרטור ההשמה (=). השפה היא בעלתטיפוסים חלשים, כך שאין צורך בהגדרה של הטיפוסים והם אף יכולים להשתנות. ערכים יכולים להיות מחושבים באמצעותקבועים, ערכי משתנים אחרים ומתוצאות של פונקציות. ב-MATLAB יש מספר קבועים, בהם pi שמייצג אתפאי ו-i שמייצגמספר היחידה המדומהi=1{\displaystyle i={\sqrt {-1}}}. למשל:

>>x=17x=17>>x='hat'x=hat>>x=[3*4,pi/2]x=12.00001.5708>>y=3*sin(x)y=-1.60973.0000>>r=2*pir=6.2832A=[3+2i7-8i]>>A=3.0000+2.0000i7.0000-8.0000i>>tol=3*epstol=6.6613e-016>>intmax('uint64')ans=18446744073709551615

וקטורים/מטריצות

[עריכת קוד מקור |עריכה]

פירוש שמה של MATLAB הוא כאמור "מעבדת מטריצות", וככזאת היא מספקת הרבה דרכים ליצירת מטריצה בעלת ממדים שונים. ב־MATLAB פירוש המונח וקטור הוא מערך חד־ממדי (1xN או Nx1) המקוצר לרוב למערך כשמתייחסים לשפות תכנות אחרות. כאשר מתייחסים למטריצה הכוונה היא לרוב למערכים רב ממדיים, כדוגמת, NxM, NxMxL, וכדומה. כאשר N ,M ו־L גדולים מ־1. בשפות אחרות, מתייחסים למטריצה כזאת כמערך של מערכים, כמערך של מערכים של מערכים, או פשוט כמערך רב ממדי.

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

>>array=1:2:9array=13579

מגדיר משתנה array (או קובע ערך חדש למשתנה array הקיים) שהוא מערך עם הערכים 1, 3, 5, 7, ו־9. המערך מתחיל ב־1, ערך ההתחלה, כל אחד מהערכים נמצא בהפרש קבוע מהקודם של 2 (ערך המרווח), והערכים במערך מגיעים אך לא עוברים את 9 (9 שהוא ערך הסיום). דוגמה אחרת היא:

>>array=1:3:9array=147

אם ערך המרווח (יחד עם סימןנקודתיים אחד) מושמט מהתחביר אזי ברירת המחדל היא 1, למשל:

>>ari=1:5ari=12345

מכניס למשתנה ari מערך עם הערכים 1, 2, 3, 4, ו־5, תוך שימוש במרווח 1 שהוא ברירת המחדל.

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

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

>>A=[163213;510118;96712;415141]A=16321351011896712415141>>A(2,3)ans=11>>A(2:4,3:4)ans=118712141>>Commas=[1,0;3,9]Commas=1039

ריבועמטריצת היחידה בגודל n יכול להיווצר באמצעות שימוש בפונקציה eye, ומטריצה בכל גודל של אפסים או אחדים יכול להיווצר עם הפונקציות zeros ו־ones, בהתאמה. לדוגמה:

>>eye(3)ans=100010001>>zeros(2,3)ans=000000>>ones(2,3)ans=111111

שחלוף מטריצה נעשה על ידי הוספת נקודה-גרש או על ידי הפונקציה transpose.הצמדה הרמיטית (שחלוף + צמוד מרוכב) נעשה על ידי הוספת גרש או על ידי הפונקציה ctranspose. במקרה שהמטריצהממשית אין הבדל בין הפעולות ואפשר להשתמש הן ב-A.{\displaystyle A.'} והן ב-A{\displaystyle A'} לשחלוף.

% complex matrix>>Z=[1,i;32i]Z=1.0+0.0i0.0+1.0i3.0+0.0i0.0+2.0i>>Z.'ans=1.0+0.0i3.0+0.0i0.0+1.0i0.0+2.0i>>Z'ans=1.0+0.0i3.0+0.0i0.0-1.0i0.0-2.0i
% real vectors and real matrix>>A=[1;2],B=A',C=transpose(A)A=12B=12C=12>>D=[03;15],D'D=0315ans=0135

רוב פונקציות MATLAB יכולות לקבל מטריצה ולהפעיל את עצמן על כל רכיב. למשל,mod(2*J,n) תכפיל כל ערך ב־J ב־2, ואז תבצע מודולו n עליו. MATLAB כוללת אמנם לולאות for ו־while, אבל שימוש ביכולת הווקטוריזציה של MATLAB יוצרת בדרך כלל קוד שהוא קריא יותר ומהיר יותר. למשל הקטע הבא לקוח מהקובץ magic.m המכיל פונקציה magic היוצרתריבוע קסם עבור ערכים אי זוגיים של n:

[J,I]=meshgrid(1:n);A=mod(I+J-(n+3)/2,n);B=mod(I+2*J-2,n);M=n*A+B+1;

ל-MATLAB יש פקודה מקוצרת לפתרוןמערכת משוואות ליניאריות המוצגות בצורה וקטורית:x=Ab{\displaystyle x=A\backslash b} הוא קיצור ל-x=A1b{\displaystyle x=A^{-1}b}. לדוגמה:

>>A=[11;-11],B=[62]'A=11-11B=62>>A\Bans=24

הכפל הסטנדרטי ב-MATLAB, האופרטור{\displaystyle *}, הוא כברירת מחדלכפל מטריצות. אם רוצים לכפול איבר-איבר יש להשתמש באופרטור.{\displaystyle .*}. ראו דוגמאות להלן:

>>A=[12;36],B=[03;21]A=1236B=0321>>P1=A*B,P2=A.*BP1=451215P2=0666>>V=[13],V*V',V.*VV=13ans=10ans=19

אופרטורים לוגיים

[עריכת קוד מקור |עריכה]

הקוד שלהלן מציג את אופרטורי ההשוואה העיקריים: שווה (==), לא שווה (=~), קטן שווה (=>) וגדול שווה (=<). הקוד מחזיר 1 לוגי אם התנאי הלוגי נכון ו-0 לוגי אחרת.

% equal, not equal, less or equal, greater than or equal>>Rel=[1==1,1~=1,1<=2,3>=2]Rel=1011

באמצעות אופרטורים בינאריים אפשר ליצור ביטויים לוגיים מורכבים. הסימון ~ מייצג NOT, הסימון & מייצג AND, הסימון | מייצג OR. ראו דוגמה להלן:

% Logical not, and, or, xor>>BinOps=[~(1==0),(1==1)&(2==2),(0==1)|(0==0),xor(1>2,2>1)]BinOps=1111

ניתן להשתמש באופרטורים && (וגם) ו- || (או), שיעילים יותר חישובית מ-& ו-|.

% Logical not, and, or, xor>>BinOps=[~(1==0),(1==1)&&(2==2),(0==1)||(0==0),xor(1>2,2>1)]BinOps=1111

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

הפונקציה plot משמשת ליצירת גרף משני וקטורים x ו־y. הקוד:

x=0:pi/100:2*pi;y=sin(x);plot(x,y)

יוצר את הגרף הבא של פונקציית הסינוס:

גרפיקה תלת־ממדית יכולה להיווצר על ידי שימוש בפונקציותsurf,plot3 אוmesh, למשל הקוד:

[X,Y]=meshgrid(-8:.5:8);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;surf(X,Y,Z)

יוצר תצוגה תלת־ממדית של הפעלת הפונקציהsinc על הרדיוס.

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

מגבלות

[עריכת קוד מקור |עריכה]

ב־MATLAB אין מערכת מרחבי שם, כמו זו הנמצאת בשפות מודרניות כ־Java ו־פייתון, כך שניתן לנקוב בשמן המלא (למשל java.lang.system.out.println). ב־MATLAB, כל הפונקציות הן מטווח השמות הגלובלי, וסדר הקדימות של פונקציות עם אותו שם נקבעות על פי סדר הגדרתן ועל פי כללים שונים.[1] כתוצאה מכך, שני משתמשים יכולים לקבל תוצאות שונות עבור אותו קוד אם נתיב החיפוש הוא שונה.

הרבה פונקציות הן בעלת התנהגות שונה עם מטריצה ווקטור ומאחר שווקטורים הם מטריצה של שורה או עמוד, עובדה זאת יכולה לגרום לתוצאות בלתי צפויות. לדוגמה, הפונקציה (sum(A כאשר A היא מטריצה נותןוקטור שורה המכיל את הסכום של כל עמודה ב־A, לעומת זאת (sum(v כאשר v הואוקטור עמודה או שורה מחזירה את הסכום של רכיביו; משום כך המתכנת צריך להיזהר אם המטריצה יכולה להתנוון מערך חד־ממדי. בזמן ש־sum והרבה פונקציות דומות יכולות לקבל ארגומנט הקובע את הכיוון, אחרות, כמו plot לא יכולות, ונדרשות בדיקות נוספות.

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

קישורים חיצוניים

[עריכת קוד מקור |עריכה]
ויקישיתוף מדיה וקבצים בנושאMATLAB בוויקישיתוף

הערות שוליים

[עריכת קוד מקור |עריכה]
בקרת זהויותעריכת הנתון בוויקינתונים
אוחזר מתוך "https://he.wikipedia.org/w/index.php?title=MATLAB&oldid=41346727"
קטגוריות:
קטגוריות מוסתרות:

[8]ページ先頭

©2009-2026 Movatter.jp