יום רביעי, 28 בספטמבר 2016

Think big

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

חידושים הקשורים לעבודה עם data:
      - ניתן לשלוט בקלות באופן ייבוא מידע מקבצים, מבלי שנצטרך לפתוח אותם - באמצעות הפונקציה
 dete​ctImportOptions.
     - ניתן לעבוד בקלות עם מידע שמיוצג בזמן, למשל מידע שנדגם מסנסורים בנקודות זמן שונות - באמצעות אובייקט חדש הנקרא timetable ושלל פונקציות ייעודיות כמו סנכרון טבלאות ודגימה מחדש.
     - ניתן לעבוד עם טקסט בפשטות ובמהירות - באמצעות טיפוס מידע חדש הנקרא string וערימת פונקציות ייעודיות לשרשור, מיון, פיצול, חיפוש וכו' – רלוונטי מאוד לתחומי NLP ו-Machine Learning.

חידושים הקשורים לעבודה עם big data:
בעולם ה-big data המידע הוא כה רב, עד שקשה לעבוד איתו באמצעות פונקציות MATLAB רגילות, אשר מניחות שכל המידע נמצא בזיכרון. במהלך השנים נוספו לסביבת MATLAB מספר רב של כלים לעבודה עם big data, המספקים פתרונות לגישה למידע, עיבודו, וכן עבודה על פלטפורמות שונות לעיבוד מקבילי, ביניהם נמנים:  memmapfile, datastore, mapreduce, gpu arrays, parallel for-loops. בגרסה החדשה נוסף טיפוס המידע tall, המאפשר לעבוד עם big data שבנוי ממספר רב של שורות ביחס למספר העמודות (ומכאן מקור השם tall).
במקום לכתוב קוד מיוחד שמתחשב בגודל הנתונים (למשל בעבודה עם mapreduce),  tallמאפשר לעבוד
עם
big data באופן פשוט ואינטואיטיבי, עם אותן פונקציות מוכרות ובאותו סינטקס, כאילו היה זה משתנה רגיל הנמצא בזיכרון - MATLAB יודע לעבוד עם חלקים קטנים של המידע הגדול שלנו, ולמעשה מנהל מאחורי הקלעים את החלוקה והעיבוד של הנתונים באופן אופטימלי.

איך זה עובד?
בניגוד לעבודה עם משתנים הנמצאים כולם בזיכרון, הפעולות על tall arrays לא מתבצעות מיד, אלא "נאגרות" עד שהמשתמש מבקש לקבל את התוצאות באמצעות פונקציית gather. כאשר קוראים ל-gather, MATLAB  משלב את כל החישובים ש"נאגרו" ומבצע אופטימיזציה כך שמספר המעברים על המידע יהיה מינימלי, דבר החוסך זמן ריצה יקר.  תהליך זה נקרא deferred evaluation  - המשתנים נמצאים במצב unevaluated, מעין מצב המתנה, עד לקריאה לפונקציית ה-gather. כדי לחסוך בזמן רב יותר, מומלץ לאגור פעולות רבות ככל האפשר ולקרוא ל-gather רק כאשר רוצים לקבל את התוצאות. יובהר ש-gather מחזירה תוצאות לזיכרון, ולכן המשתנים המוחזרים מהפונקציה צריכים להיות בגודל המתאים לזיכרון המחשב או ה-clusterבהקשר הזה יודגש שניתן לעבוד עם tall arrays במחשב האישי, על גבי clusters, ואפילו על גבי Spark* (תהליך העבודה המומלץ הוא "להתחיל בקטן" - לפתח את האלגוריתם במחשב האישי, ולאחר מכן להרחיב את העבודה עם אותו קוד על גבי פלטפורמות אחרות).
שימו לב לכך שניתן לכתוב
tall arrays  שלמים לדיסק או לשמור מצב נוכחי של  tall arrays (יצירת קובץ קטן המתבסס על כך שהמידע המקורי נגיש ונמצא באותו מיקום) באמצעות הפונקציות write ו-save (בהתאמה).

אז איך מתחילים?
כדי ליצור tall arrays יש להגדיר תחילה משתנה datastore, אשר הינו אובייקט המשמש כמצביע על קובץ גדול או רשימה של קבצים הנמצאים בזיכרון או על גבי HDFS, ומאפשר לקרוא את המידע מהזיכרון בחלקים לפי הגדרות המשתמש. לאחר מכן – אפשר להגדיר את ה datastore- להיות tall array באמצעות פונקציית tall. הנה סינטקס לדוגמה (לחצו להגדלה):  
על ה-tall array הנ"ל ניתן כעת לעבוד באמצעות מאות פונקציות מעולם הסטטיסטיקה וה-machine learning התומכות בעבודה עם tall arrays. לרשימה המלאה - לחצו כאן.

לסיכום -
התשתית מוכנה, התמיכה רחבה, וכל מה שנשאר זה להתחיל לחשוב בגדול!


*למידע על עבודה עם tall arrays על גבי Spark ישירות דרך ה-MATLAB, לחצו כאן. לעבודה עם tall arrays על גבי Spark באמצעות אפליקציה מקומפלת – לחצו פה.

יום רביעי, 31 באוגוסט 2016

הטבלה לא משקרת

בפוסט הקודם (לחצו פה) סקרתי את טיפוס הנתונים categorical, אשר נוסף לסביבת MATLAB בגרסת R2013b. באותה גרסה הצטרף גם טיפוס נתונים שימושי נוסף, table, אשר בו יעסוק הפוסט הנוכחי.

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

כיצד יוצרים table ?
על מנת לייבא מידע מקבצי Excel לתוך ה-workspace בצורה של table, ניתן להשתמש ב-import tool (קליק כפול על הקובץ, ובחירה באופציה Table בחלון ה- IMPORTED DATA). לחילופין, אפשר להשתמש בפקודה readtable (מומלץ לראות בתיעוד את האפשרויות השונות שהיא מציעה – כולל דרכי הטיפול בנתונים חסרים – לחצו פה לתיעוד). אגב, כפי שיש readtable, יש גם את הפקודה writetable, המאפשרת למשל לשמור table לתוך קובץ Excel.
ניתן גם לבנות טבלה מתוך משתנים אשר קיימים ב-workspace, וזאת באמצעות הפקודה table (דוגמה בהמשך).
ואפשר גם להיעזר בפונקציות המרה אשר ממירות מידע מטיפוס אחד לטיפוס table, למשל – הפונקציה struct2table, אשר ממירה מידע מ-structure array לצורת table.
אגב, אם יש לכם מספר tables – ניתן לאחד אותם. אם מדובר בשני tables המכילים תצפיות שונות של אותם המשתנים – יש לבצע שרשור אנכי – t3=[t1;t2]. ואם מדובר בשני tables שמכילים נתונים שונים על אותן התצפיות (או על חלק מהן) – אפשר להשתמש בפקודות join, innerjoin, outerjoin, תלוי במקרה ובמה שרוצים להשיג.
יצירת table מתוך משתנים קיימים (לחצו להגדלה)
סבבה, יש לי table, איך אני מחלץ ממנו את הנתונים הדרושים לי ?
אפשר לעבוד עם table כמו שעובדים עם כל מטריצה, ובאמצעות אינדקסים נומרים מתאימים לחלץ רק עמודות ושורות רלוונטיות. למשל, על ידי z=t(1:20,[8,10]) נקבל table חדש באורך 20 שורות ושתי עמודות. אבל, כדאי לדעת ש-table מאפשר לחלץ עמודות גם על סמך השם שלהן, ולא רק על סמך המספר שלהן. למשל:  z=t(:,'age'). הנ"ל כמובן תקף גם לגבי שורות.
כדי לגשת למידע עצמו שנמצא בעמודה מסוימת, ולקבל וקטור או מטריצה מטיפוס המידע המקורי של הנתונים (להבדיל ממה שבוצע קודם - שהיה לקבל table קטן יותר) – יש להשתמש באופרטור הנקודה, למשל: z=t.age. דרך אחרת, שמאפשרת לחלץ מספר עמודות יחד לתוך מטריצה אחת (כמובן בהנחה שכל העמודות מאותו טיפוס מידע מקורי), היא שימוש באופרטור הסוגרים המסולסלים, לדוגמה:
z=t{:,{'age','height'}}.

אוקיי, חוץ מניהול נתונים, חילוץ נתונים והדפסה נוחה שלהם, יש עוד משהו
שאפשר לעשות עם
table ?
ברור !
table הוא אובייקט בעל properties שאפשר להפעיל עליו methods. כדי לראות את ה-properties של t, יש להשתמש בסינטקס t.Properties (שימו לב ל-P הגדולה).  כמובן שניתן לשנות את ה-properties השונים, למשל – אפשר לתת כותרות גם לשורות.
שינוי properties של table (לחצו להגדלה)
כאמור, ניתן להפעיל על table פונקציות ספציפיות, methods. כדי לראות את רשימת הפונקציות שניתן להפעיל על t, יש להקליד methods(t). למשל, אפשר למיין את t לפי משתנה מסוים באמצעות המתודה sortrows, או להציג סיכום סטטיסטי על כל משתנה עם המתודה summary.

מיון table לפי עמודת הגיל (לחצו להגדלה)
בנוסף לכתוב לעיל, ניתן להשתמש בפונקציה varfun על מנת להפעיל כל פונקציה שרירותית על כל משתנה שב-table ! למשל, הנה דוגמה בה מבוצע סיכום של העמודות השונות (לחצו להגדלה):

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

יום חמישי, 21 ביולי 2016

טיפוס סימפטי

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

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

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



ניתן להפעיל את פקודת whos על המשתנה a, ולהתרשם שגודלו הינו 2418 bytes.

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



הפעלה של פקודת whos על המשתנה a כעת, מראה שגודלו נהיה קטן יותר בעקבות הפעולה, והוא כעת 2169 bytes. לכאורה זה נראה כרווח זניח, אך אם מסתכלים רק על העמודה הימנית – מגלים שגודלה כעת הינו 58% מגודלה המקורי, וכמובן שאם העמודה הימנית היתה מורכבת ממספר גדול יותר של איברים, החסכון ב-bytes היה גדול יותר, שכן משתנה מסוג categorical צריך לאחסן מספר מצומצם של ערכים אפשריים, ולכן צורך פחות זיכרון ממערכים נומריים או ממערכים של מחרוזות (strings).

למען הסר ספק, משתנה categorical יכול להכיל יותר משתי אפשרויות, לדוגמה:




במקרים בהם המידע רב, ורוצים לדעת במהירות מה אוסף האפשרויות של משתנה ה- categorical, כל מה שנדרש לעשות הוא להשתמש בפקודה categories:




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




ניתן לשלוט על שמות הקטגוריות על ידי הכנסתם בתור קלטים נוספים לפונקציה categorical, וניתן אפילו להגדיר היררכיה בנתונים. למשל, אם הערך "1" שקול למידה "small", הערך "2" למידה "medium", והערך "3" למידה "large", ניתן להגדיר משתנה שבו יהיה ל-MATLAB ברור ש"small" קטן מ-"medium", ו-"medium" קטן מ-"large". לדוגמה (אפשר ללחוץ על התמונה להגדלה):




ובדיקה האם האיבר השני אכן גדול מהאיבר הראשון, תניב (כצפוי) תוצאה שלילית:




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

למעוניינים במידע נוסף על טיפוס הנתונים הסימפטי הזה – לחצו פה.

יום ראשון, 26 ביוני 2016

GUI ליצירת GUIs

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

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

נבחר באופציה Blank GUI לצורך יצירת GUI חדש, ולצורך הדוגמה – נכין GUI עם מערכת צירים בה יוצג גרף של 10 מספרים אקראיים שיוגרלו ויוצגו לאחר לחיצה על לחצן ייעודי בממשק המשתמש.
את מערכת הצירים נצייר בעזרת לחצן ה-Axes (חץ ירוק), ואת הלחצן שבעקבות לחיצה עליו יוגרלו המספרים האקראיים ויוצגו על מערכת הצירים – נצייר בעזרת לחצן ה-Push Button (חץ אדום):

GUIDE - ניתן ללחוץ להגדלה

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

אם נלחץ על לחצן ה-Push Button ב-GUI שנוצר – לא יקרה דבר – וזה הגיוני בהחלט לאור העובדה שטרם הוגדר מה בדיוק צריך לקרות בעקבות לחיצה עליו. על מנת להגדיר את הפעולה שצריכה להתבצע (הגרלת 10 מספרים אקראיים והצגתם) – אפשר לחפש בקוד ה-MATLAB שנוצר בצורה אוטומטית היכן נמצאת השורה בה יש לכתוב את שורות הקוד הרלוונטיות, אבל יותר פשוט – לחזור לסביבה בה יצרנו את ה-GUI, ללחוץ עם הלחצן הימני של העכבר על ה-Push Button, ולבחור View Callbacks ואז Callback. בעקבות כך – תסומן ב-m file שהופק שורת הקוד שלאחריה יש לכתוב:
plot(rand(10,1))
את ה-GUI המעודכן אפשר לטעון באמצעות הרצת קוד ה-MATLAB שהרגע נערך (F5), והנה התוצאה:


כמובן שניתן לקמפל את ה-GUI הנ"ל לאפליקציית Stand Alone (קובץ exe) באמצעות ה-MATLAB Compiler, לצורך העברתו למחשב בו אין רישיון MATLAB פעיל, או לארוז את ה-GUI בתור App לצורך העברתו למחשב בו מותקן MATLAB (לחצו לסרטון).

ברור גם שניתן לייצר ממשקים מורכבים יותר (עשינו שימוש רק בשניים מבין הלחצנים שב-GUIDE). למעוניינים – מומלץ לבדוק את הקישור הבא, המכיל 41 דוגמאות ליכולות שימושיות של ממשקי המשתמש הגרפיים בסביבת MATLAB (לחצו פה), וכן את ממשק ה-App Designer שהתווסף ל-MATLAB בגרסת R2016a (לחצו למידע).

יום ראשון, 29 במאי 2016

מידול פיסיקלי

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

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

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

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

להלן סקירה של יכולות הכלים השונים של חברת MathWorks למידול פיסיקלי:

Simscape
Simscape הינו כלי למידול וסימולציה עבור מערכות פיסיקליות רב-תחומיות, המאפשר ליצור בצורה מהירה מודלים של מערכות פיסיקליות בסביבת התכנות הגרפי Simulink, ולסמלץ אותם. בעזרת הכלי, ניתן למדל מערכות כגון מנועים חשמליים, מיישרי זרם, מפעילים הידראולים, מערכות קירור ועוד, וזאת על ידי שילוב רכיבים בסיסיים לתוך דיאגרמת בלוקים אחת.
בנוסף, Simscape עוזר לפתח מערכות בקרה ולבחון ביצועים ברמת המערכת (System-Level). בעזרת ה- Simscape Language, ניתן ליצור רכיבים, ספריות ותחומים חדשים המבוססים על בלוקים פיסיקליים גנריים. כמו כן, ניתן להשתמש בביטויים ופרמטרים מסביבת ה- MATLAB ולסגור חוגי בקרה בסביבת ה- Simulink.
כפי שנכתב לעיל, קיימים כלים מתקדמים נוספים עבור מידול פיסיקלי, כלים היושבים על גבי פלטפורמת ה- Simscape והמספקים בלוקים מורכבים יותר ויכולות ניתוח נוספות. כל הכלים הללו, וכמובן Simscape, מאפשרים יצירת קוד C מתוך דיאגרמת הבלוקים במטרה לפרוס ולהריץ את המערכות הממודלות בסביבות סימולציה אחרות (HIL: hardware-in-the-loop).
למידע נוסף - לחצו פה.

Simscape Multibody
Simscape Multibody (ובשמו הקודם: SimMechanics) מאפשר סימולציה עבור מערכות מכאניות בתלת-מימד כגון מערכות רובוטיות, מתלים לרכב, ציוד מכאני כבד ומערכות תעופתיות. בעזרת הכלי ניתן למדל מערכות מורכבות באמצעות בלוקים המייצגים חוליות, מפרקים, אילוצים, אלמנטים של כוחות/מומנטים וחיישנים. לאחר הגדרת כל האלמנטים, ניתן ליצור הדמייה תלת-מימדית ולבחון את דינאמיקת המערכת. ניתן לשלב כלי זה עם כלים פיסיקלים נוספים במטרה למדל את המערכת קרוב ככל האפשר למציאות. הכלי מגדיר ומחשב את משוואות התנועה עבור מערכת מכאנית שלמה. כמו כן, הכלי מאפשר לייבא לתוך המודל הרכבות CAD שלמות ואת המידע הרלוונטי עבורן: מסות, אינרציות, מפרקים, אילוצים וגאומטריות תלת-מימד.
למידע נוסף - לחצו פה.

Simscape Electronics
Simscape Electronics (ובשמו הקודם: SimElectronics) מספק ספריות רכיבים עבור מידול וסימולציה של מערכות אלקטרוניות ומערכות אלקטרומכאניות. הכלי כולל בלוקים המיצגים סוגי מנועים שונים, ממירי A/D, D/A, חיישנים, מפעילים ומוליכים למחצה (הרכיבים של המוליכים למחצה כוללים השפעות דינאמיות ולא לינאריות של הטמפרטורה על המערכת). ניתן להשתמש ברכיבי הכלי בכדי לפתח מערכות הפעלה אלקטרומכאניות ולבנות את התנהגות המודל במטרה להעריך ארכיטקטורות של מעגלים אנלוגים. הכלי מאפשר שילוב של תחומים פיסיקלים נוספים כגון: מכאניקה, חשמל, מעבר חום ועוד ממשפחת הכלים הפיסיקלים של Simscape. כמו כן, Simscape Electronics מאפשר פיתוח מערכות מורכבות כגון אלקטרוניקה של גוף הרכב, מכאניזם של מנועי סרבו בכלים תעופתיים, מגבירי שמע ועוד.
למידע נוסף - לחצו פה.

Simscape Driveline
Simscape Driveline (ובשמו הקודם: SimDriveline) מספק ספריות רכיבים עבור מידול וסימולציה של מערכות מכאניות מסוגים של סיבוב ו/או העתקה ומרכיבי רכב שונים כגון: מנועים, צמיגים, תמסורות גירים וממירי מומנט. ניתן להשתמש בכלי זה בכדי למדל תמסורות מכאניות מורכבות של מסוקים, ציוד תעשייתי כבד, מערכות העברת אנרגיה ועוד. בנוסף, הכלי מאפשר לשלב מערכות פיסיקליות מתחומים מגוונים: חשמל, הידראוליקה, פנאומטיקה ועוד ממשפחת הכלים הפיסיקלים של Simscape.
למידע נוסף - לחצו פה.

Simscape Fluids
Simscape Fluids (ובשמו הקודם: SimHydraulics) מספק ספריות רכיבים עבור מידול וסימולציה של מערכות נוזלים. הכלי מכיר רכיבים המתארים משאבות הידראוליות, שסתומים, מפעילים, צינורות ומחליפי חום. ניתן להשתמש בכלי זה עבור פיתוח מערכות כוח הידראוליות כגון: היגון כוח, כני נסע ועוד. הכלי מאפשר גם למדל מנועי קירור, חומרי סיכה עבור גירים ומערכות הספקת דלק. הכלי מאפשר שילוב של תחומים פיסיקלים נוספים כגון: מכאניקה, חשמל, מעבר חום ועוד ממשפחת הכלים הפיסיקלים של Simscape.
למידע נוסף - לחצו פה.

Simscape Power Systems
Simscape Power Systems (ובשמו הקודם: SimPowerSystems) מספק ספריות רכיבים עבור מידול, סימולציה וניתוח של מערכות זרם חזק (הספק). הכלי כולל מודלים של רכיבי הספק חשמליים, מכונות תלת-פאזיות, מנועים חשמליים, רכיבים לתמסורות מערכות זרם חילופין (FACTS) ורכיבים למידול מערכות אנרגיה מתחדשת. בנוסף, Simscape Power Systems מאפשר לחקור את ביצועי המערכת המתוכננת: ניתוח הרמוניות וחישוב עיוותי הרמוניות כולל (THD). הכלי מאפשר שילוב של תחומים פיסיקלים נוספים כגון: מכאניקה, חשמל, מעבר חום ועוד ממשפחת הכלים הפיסיקלים של Simscape.
למידע נוסף - לחצו פה.

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