יום רביעי, 30 בספטמבר 2015

חידושים בגרסת R2015b

גרסת R2015b של כלי MathWorks כוללת שדרוגים משמעותיים ל-MATLABSimulink ולעוד עשרות כלים.

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

MATLAB
  • האצת מהירות הריצה של קוד הודות לשיפור מנוע ביצוע הרצת הקוד (execution engine) על ידי שימוש ב-JIT  (just-in-time compilation). לחצו למידע נוסף.
  • ניווט וקיצורי מקלדת חדשים ב-Help מאפשרים מציאת אינפורמציה מהר יותר. לחצו לסרטון.
  • Add-on Explorer - כלי הוספת תוספות חיצוניות ל-MATLAB, המאפשר הורדה והתקנה של כלים וספריות (Packages) חיצוניים, מתוך ה-MATLAB, ללא צורך בהתקנה חיצונית. לחצו לסרטון.
  • פונקציות graph ו-digraph ליצירת גרפים ורשתות, ניתוחם והצגתם. לחצו לסרטון.
  • אפשרות להעביר את הצירים בגרף דרך הראשית. בתמונה למטה: מצד שמאל - המצב לפני הגרסה החדשה, מצד ימין - השינוי בגרסה החדשה. שורות קוד רלוונטיות מופיעות מתחת לגרפים (לחצו על התמונה להגדלה).

  • אובייקט ה-Datastore יכול להתממשק כעת למסדי נתונים המכילים תמונות, ולא רק קבצי טקסט.
  • התממשקות עם Python:
o        MATLAB מתוך Python – ניתן להפעיל את ה-MATLAB Engine מתוך סביבת Python ולהשתמש בכל הפונקציונאליות של MATLAB המאופשרת על ידי ה-MATLAB Engine.
o        Python מתוך MATLAB – ניתן להפעיל פונקציות Python ואף את סביבת ה-interpreter של Python מתוך סביבת ה-MATLAB.
  • הגרסה החדשה נתמכת להתקנה גם על גבי מערכת ההפעלה Windows 10, כמו קודמתה, אך אינה נתמכת להתקנה על Windows XP.
  • R2015b הינה גרסת ה-MATLAB האחרונה שתומכת במערכת הפעלה 32 ביט של Windows.  החל מהגרסה הבאה גם לא תהיה יותר תמיכה בהתקנה של מנגנון ניהול הרישיונות על גבי פלטפורמה זו.
  • עדכון רישיונות Concurrent ו-NNU לגרסה החדשה מחייב גם עדכון גרסה של מנגנון ניהול הרישיונות (FlexNet 11.13).


Image Processing Toolbox
  •         תמיכה בתכנון מסנני גאבור והפעלתם.
  •         מגוון פונקציות בתחומי העיבוד המורפולוגי והסינון רצות כעת מהר יותר.
  •         תוספת של 20 פונקציות לרשימת הפונקציות הניתנות להמרה לקוד C בעזרת MATLAB Coder – בין היתר, גם bwareaopen, imrotate, imcrop, imresize והתמרת Hough נתמכות כעת.


Computer Vision System Toolbox
  •  Optical Flow בעזרת שיטת Farneback , האוביקט נתמך להמרה לקוד C על ידי  MATLAB Coder
  • חילוץ פיצ'רים של local binary pattern (LBP) , גם כאן יש תמיכה להמרה לקוד C על ידי MATLAB Coder
  •  פרט לשתי היכולות החדשות המוזכרות, גם ארבע פונקציות אחרות ניתנות כעת להמרה לקוד C בעזרת MATLAB Coder, וביניהן detectCheckerboardPoints ו-insertText
  • האצת גילוי פיצ'רים של FAST תוך שימוש ב-GPU (מצריך Parallel Computing Toolbox)
  • התאמת ספירות, גלילים ומישורים לענני נקודות (Point Clouds) תלת-מימדיים תוך שימוש ב-RANSAC
  • ויזואליציה של ענני נקודות, כולל צפיה בענני מידע תלת-מימדיים המתקבלים בזמן אמת מסנסורים כמו Kinect (בעזרת הפקודה pcplayer)
  • שערוך וקטורים ניצבים בכל נקודה על ענן נקודות, בעזרת פקודת pcnormals


Statistics and Machine Learning Toolbox
  • הוספת יכולות ל- Classification Learner:
         o        ייבוא נתונים ישירות מקבצי טקסט, CSV, ועוד
         o        הוספת מודל קלסיפיקציה של Discriminant analysis
         o        הורדת מספר המימדים (Dimensionality reduction) בעזרת Principal component analysis (PCA)
  • ייצור קוד C/C++ עבור אלגוריתם Kmeans  (Unsupervised Learning) בעזרת MATLAB Coder
  • תוספת של למעלה מ-65 פונקציות לרשימת הפונקציות הניתנות להאצה תוך שימוש ב-GPU (מצריך Parallel Computing Toolbox)


Neural Network Toolbox
  •  יצירת רשת מסוג Deep Learning Neural Network.


Optimization Toolbox
  •         ממשק המשתמש עבור יצירת בעיות אופטימיזציה (optimtool) יוסר בגרסאות עתידיות.

Simulink
  • ממשק חדש לבלוק ה-Scope לשיפור הצפיה והדיבוג של מידע – ניתן לשלוט על התקדמות הסימולציה מתוך הבלוק, להוסיף טריגרים, להוסיף סמנים, לבצע מדידות ועוד. לחצו לסרטון.
  • בלוק קלט חדש לטעינת מידע מתוך קובץ Excel (לחצו למידע) ובלוק חדש ליצירת אותות כניסה (לחצו לסרטון).
  • תצוגת רשימה (List View) ל-Configuration Parameters, המאפשרת לבצע חיפוש של פרמטר אותו רוצים לשנות, וכוללת אופציה לסינון תוצאות החיפוש על פי קטגוריות. לחצו לסרטון.
  • כאשר גוררים בלוק מה-Library Browser ניתנת אפשרות לשנות את הפרמטר העיקרי שלו מבלי להיכנס לממשק המשתמש שלו
  • חקר קל יותר של ערכי הפרמטרים בבלוק. לחצו לפוסט בנושא.
  • שיקום סיגנל ("קו") קטוע – מאפשר לחבר שני קוים לקו אחד לאחר מחיקת בלוק. לחצו לסרטון.


Parallel Computing toolbox
  • הוספת תמיכה בפונקציות המפורטות למעלה עבור האצה באמצעות ה- GPU, ופרט לכך – גם פונקציות מכלים אחרים ניתנות כעת להאצה על ידי ה-GPU
  • פונקציית mexcuda לקימפול מהיר של קבצי mex המכילים קוד CUDA
  • הוספת פונקציה חדשה בשם parallel.pool.Constant המאפשרת יצירת משתנים קבועים כך שניתן לגשת אליהם מתוך Pool כגון Parfor
  • הפסקת התמיכה של הכלי במערכת הפעלה 32 ביט של  Windows

MATLAB Compiler
  • MATLAB Compiler בגרסת 64 ביט מאפשר לפתח תוספים ל-Excel אשר מיועדים להיות מותקנים תחת חבילת Office בגרסת 32 ביט.
  • הרחבת התמיכה בקימפול עבור סביבת Hadoop - החל מהגרסה החדשה datastore מאפשר לשמור גם קבצי תמונה.

MATLAB Compiler SDK
  • תומך באפשרות לקמפל קוד MATLAB לחבילות Python, לצורך שילוב הקוד באפליקציות הכתובות בשפה זו

MATLAB Production Server
  • תמיכה בהתממשקות לקוד המקומפל עבור C/C++ דרך פרוטוקול HTTPS (עד עתה פנייה דרך פרוטוקול HTTPS הייתה אפשרית רק מתוך Python, C# ו-Java)

MATLAB Coder
  • ניתן לייצר קוד C מקוד MATLAB העושה שימוש ב- cell arrays
  • הוספת תמיכה ביצירת קוד C מתוך פונקציות המפורטות למעלה
  • mex files מהירים יותר עבור פעולות של אלגברה ליניארית באמצעות שימוש בספריות LAPACK
  • ·אפשרות לבצע בדיקות Run-Time לקוד C שהוא Standalone (כמו בדיקה האם מתבצעת פניה לאינדקס אשר מחוץ לגודל המערך). עד כה היה ניתן לבצע את הבדיקות רק לקוד mex
  • תמיכה בקומפיילר חינמי MinGW-w64  עבור מערכת הפעלה 64 ביט של  Windows

Simulink Coder
  • קוד יעיל יותר עבור מערכות multirate
  • תמיכה בייצור קוד C++ עבור protected models
  • תמיכה בקומפיילר חינמי MinGW-w64  עבור מערכת הפעלה 64 ביט של  Windows


Embedded Coder
  • כלי חדש (Embedded Coder Quick Start) שמאפשר להכין במהירות את המודל ליצירת קוד Embedded קריא ויעיל
  • אפשרות לחיסכון בזיכרון הקוד (RAM/ROM) באמצעות שיתוף של משתנים עבור כניסות ויציאות של subsystem ובאמצעות שימוש בפוינטרים במקום העתקות
  • שיפורים ב-SIL/PIL - זמני ריצה מהירים יותר ואפשרות לצפייה ב-profiling של הקוד תוך כדי ריצה

Simscape
  •  Simscape Language – שינויים סמנטיים הקשורים לטיפול בפעולות מתמטיות על יחידות פיזיקליות – על מנת להגדיל את הרובסטיות והעקביות של תוצאות הסימולציות:
           o        בהגדרת משתנה פיזיקלי {value,'unit'} חובה להגדיר את הערך עצמו ללא יחידות (אין יותר את הגמישות שהיתה בעבר בנושא זה, אשר למרבה הצער במקרים רבים "עלתה" בהמרת יחידות כפולה)                    o        בהגדרת ארגומנטים חובה להגדירם עם יחידות, מתבצע נירמול לערך 1 של הערך הנשלח (בעבר הפונקציות היו מתייחסות לארגומנטים בצורה נומרית בלבד, כיום ההתייחסות הינה פיזיקלית)
  • ספריית Periodic Operators - בלוקים חדשים לעבודה על אותות מחזוריים
  • שיפור במהירות ויעילות סימולציות של מערכות לינאריות ממותגות של כ- 30% (גם ב- Accelerator mode וגם ב-Normal mode)
  • רישום משתנים ל- Workspace כ-Structure – טיפול בשמות המשתנים והענפים. בעבר המערכת הייתה משנה את שמות המשתנים (שמירה על ייחודיות), כיום שמות המשתנים והענפים הינם בדיוק כפי שהוגדרו בדיאגרמת הבלוקים

SimMechanics
  • בלוק spline בספריית Curves and Surfaces להתמודדות עם חוליות המתכנסות במספר מישורים (2-D, 3-D)
  • הוספת מסגרות לגוף קשיח (Solid) – מקל על תכן ושינויים מהירים בגוף בסיסי
  • הגדרת סיבובים ב-3D כרצף של שלושה סיבובים בסיסיים (זוויות אויילר( בבלוק ה-Rigid Transform

SimPowerSystems
  • Nonlinear Inductor, Nonlinear Transformer - בלוקים חדשים של רכיבים לא-לינארים כתוצאה מרוויה מגנטית
  • טיפול בהפסדים והחזרים עבור מנועים מסוג Brushless (​Brushless DC Motor block)

SimElectronics
  • בלוק Fault - הדמיית כשלים במערכת (open-circuit, short-circuit) ב- זמן / ערך / מצב מוגדר מראש. מאפשר ניתוח המערכת ושליחת אזהרות בזמן ריצת הסימולציה.
  • בלוק Resistor- הגדרת אפיצות, תחומי עבודה, כשלים, רעשים תרמיים וההשפעות שלהם.
  • שימוש בטבלאות להגדרת יעילות מנועי  Servoכפונקציה של המומנט והמהירות.


למידע נוסף, אנא היכנסו לעמוד הגרסה באתר.

יום שלישי, 11 באוגוסט 2015

טקסי מטלב | על ההתנסות של התעשיה האווירית בשימוש בכלי MathWorks בפיתוח ה-TaxiBot

מנועים של מטוסים מסחריים נמצאים ביעילות מקסימלית בזמן טיסה, ואינם אופטימליים בזמן הסעה (taxiing) של המטוס בשדה התעופה, בין שער העלייה למטוס לבין מסלול ההמראה. לדוגמה, בהסעה טיפוסית של 17 דקות, בואינג 747 יכול לצרוך טון דלק, ולשחרר 3.2 טון של דו-תחמוצת-הפחמן, תוך כדי גרימת רעש רב. משמע, יש לדבר משמעויות כספיות וסביבתיות, ולכן – התעשייה האווירית פיתחה את הטקסיבוט (TaxiBot) – כלי רכב חצי-רובוטי המסוגל להסיע מטוס מתודלק שמנועיו הראשיים כבויים. בזכות הפיתוח הזה – צריכת הדלק יורדת מטון ל-25-30 ליטר בלבד, ופליטת דו-תחמוצת-הפחמן פוחתת מ-3.2 טון ל-60 ק"ג בלבד. חשוב, לא ?

כדי לפתח את תוכנת מחשב המשימה של ה-TaxiBot, השתמשה התעשייה האווירית בתכנון מבוסס-מודל (Model-Based Design) באמצעות MATLAB ו-Simulink – משלב כתיבת הדרישות, דרך מידול המערכת, המרה אוטומטית שלה לקוד C, ועד שילוב הקוד הנ"ל וביצוע וריפיקציה שלו על ידי בדיקות Hardware-in-the-loop. הפרויקט, אגב, אף רושיין באמצעות כלי MathWorks לתקן ה-DO-178 - לחצו לפוסט בנושא הנ"ל בבלוג הזה מלפני שלוש וחצי שנים.

כדי לקרוא על ההתנסות של התעשיה האווירית בשימוש בכלי MathWorks בפרויקט – וכיצד הם קיצרו את זמני הפיתוח ב-50% בהשוואה להתנסות שלהם עם שיטות פיתוח מסורתיות – לחצו כאן.

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

יום חמישי, 23 ביולי 2015

אין סוסים שמדברים עברית, אבל מטלב – בהחלט מדבר


הידעת ש-MATLAB יודע לזהות טקסט בעברית ?

זיהוי תווים אופטי הוא תחום מתפתח חשוב בעולם הראיה הממוחשבת, ובדיוק בשל כך בגרסת R2014a של ה-Computer Vision System Toolbox נוספה לכלי הפונקציה ocr. בתחילה, הפונקציה תמכה רק בשפות אנגלית ויפנית, אבל החל מגרסת R2014b – ניתן להוריד ללא עלות חבילת תמיכה בשפות נוספות, כולל עברית !

כל מה שצריך לעשות על מנת להתקין את התוסף זה להקליד visionSupportPackages, ללחוץ על next, ולבחור ב-OCR Language Data. וכיצד משתמשים בפקודה ocr על מנת לפענח טקסט בשפת הקודש ? הנה דוגמה:

ניקח את הטקסט הבא, המתאר אותי במספר משפטים:


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


והנה התוצאה (יש ללחוץ על התמונה להגדלה):


מגניב, לא ?

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



יום ראשון, 28 ביוני 2015

מאות משתתפים בכנס MATLAB & Simulink בינלאומי בישראל


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

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

בחלק הראשון של היום האזינו המשתתפים להרצאתו של ד"ר רוי לוריא (Dr. Roy Lurie), סמנכ"ל הפיתוח של כלי MATLAB, אשר סקר כיצד MATLAB מקדם תהליך חדשנות בכל העולם, ובפרט – בישראל. בהמשך נהנו הנוכחים מהרצאה מרתקת על הסיפור שמאחורי מערכת כיפת ברזל, שהועברה על ידי ארי סכר מחברת רפאל, אשר משמש כמהנדס מערכת בפרויקט (לפוסט שפורסם כאן בנושא הזה לפני שלוש שנים וחצי - לחצו פה).

בחלק השני של הכנס התחלקו הנוכחים בין שמונה מסלולים מקצועיים בתחומים שונים ומגוונים, אשר הועברו על ידי מהנדסי האפליקציה של סיסטמטיקס, בכירי MathWorks, ומשתמשי הכלים – ממשתמשים מנוסים ועד תלמידי תיכון שהסבירו על אופן השימוש שלהם בכלי MATLAB ו-Simulink. נושאי המסלולים המקצועיים היו "עיבוד תמונה וראיה ממוחשבת", "אווירונאוטיקה ורובוטיקה", "תקשורת ועיבוד אות", "לימוד מכונה ו-Data Science", "תכנון חומרה וביצוע וריפיקציה", "המרה אוטומטית של קוד MATLAB לקוד C", "האצת ביצועים של אלגוריתמים והפצה שלהם" ו-"Internet of Things".

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

זה הכנס הכי גדול שקיימנו עד כה בתשע שנות פעילות של קו מוצרי ה-Technical Computing & Model-Based Design , אנחנו מאוד מרוצים מההיענות של משתמשי הכלים, ועל סמך הפידבקים שקיבלנו – המשתתפים בכנס נהנו ולמדו המון. להתראות באירועים הבאים – מומלץ לעקוב אחר הפרסומים באתר סיסטמטיקס, שאגב - עבר לאחרונה מתיחת פנים רצינית (לחצו פה).


יום שלישי, 26 במאי 2015

כיצד להחליף מחשב ולהישאר בחיים ?


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

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

אל התיקייה הנ"ל ניתן להגיע על ידי כתיבת הפקודה prefdir ב-MATLAB שעל המחשב הישן, ובה ניתן למצוא את הקובץ  shortcuts_2.xml (או shortcuts.xml, תלוי בגרסת ה-MATLAB) וכתלות בגרסה – אולי גם את הקובץ MATLABQuickAccess.xml אשר מכיל את הגדרות ה-Quick Access Toolbar שלכם (נכנס בגרסת R2012b). עכשיו כל שנותר הוא רק להעתיק את הקבצים הללו לתיקיית ה-Preferences של MATLAB על המחשב החדש – ואתם מסודרים (גם אותה מוצאים על ידי שימוש בפקודת prefdir).

עכשיו כולם ביחד: "תתחדש רועי"   J