‏הצגת רשומות עם תוויות R2011b. הצג את כל הרשומות
‏הצגת רשומות עם תוויות R2011b. הצג את כל הרשומות

יום רביעי, 5 בדצמבר 2012

שובם של ה-System Objects

בשלוש שנות קיומו של הבלוג הזה, השתדלתי כמה שפחות למחזר פוסטים. אבל בפוסט הנוכחי אחרוג ממנהגי, מכמה סיבות:
1. חלפו שנתיים וחצי מאז הפוסט האחרון בנושא שבו ארצה לדון
2. בתקופה הזו הנושא התפתח מאוד
3. חברת MathWorks רואה בנושא הזה מרכיב חשוב בתוכניותה לעתיד
4. מעט מאוד אנשים נחשפו לנושא הזה עד כה (בכל פעם שאני שואל את הקהל שאני ניצב מולו האם אנשים מכירים את הנושא, בודדים, אם בכלל, משיבים "כן").

הנושא הינו System Objects, אלגוריתמים העומדים מאחורי אובייקטים הקיימים בסביבת MATLAB כבר 6 גרסאות (מאז גרסת R2010a). כשכתבתי על כך לפני שנתיים וחצי, היו קיימים רק כ-140 אובייקטי מערכת, ורק בתחומים עיבוד אות, עיבוד וידאו, עיבוד תמונה וראיה ממוחשבת. כיום, קיימים כבר כ-330 אובייקטי מערכת, המשמשים ל:
1. עיבוד אות - מעל 95 אובייקטי מערכת ב-DSP System Toolbox
2. עיבוד וידאו, עיבוד תמונה וראיה ממוחשבת - מעל 60 אובייקטי מערכת ב-Computer Vision System Toolbox
3. פיתוח השכבה הפיזית של מערכות תקשורת - מעל 105 אובייקטי מערכת ב-Communications System Toolbox
4. תכנון, סימולציה וניתוח של מערכות מכ"מ, מערכות Ultrasound ומערכות תקשורת מרובות-אנטנות - מעל 60 אובייקטי מערכת ב-Phased Array System Toolbox

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

להבדיל מפונקציות MATLAB, אשר הינן מסוג "y שווה לפונקציה של x", ה-System Objects מסוגלים לעבוד עם קלט משתנה (Streams) וכן מסוגלים לספק מידע על המצבים הפנימיים של הפונקציה. בכך הם מרחיבים את שפת MATLAB באופן המאפשר למדל מערכות דינמיות באמצעות שפה טקסטואלית, ומהווים מעין "גשר" המקשר בין MATLAB ל-Simulink. כמובן שאם כתבתם אלגוריתם ב-MATLAB העושה שימוש ב-System Objects, אתם מוזמנים לנסות להכניס אותו לתוך בלוק ה-MATLAB Function ב-Simulink על מנת לשלבו כחלק ממודל בסביבה הזו.

מבחינת ביצועים – נניח ואתם מעוניינים לבצע Edge Detection לפריימים השונים בסרטון וידאו. בעוד ששימוש בפונקציית edge בתוך לולאה העוברת בין הפריימים השונים יהיה כרוך בקריאה לאותה פונקציה בכל פעם מחדש (דבר אשר כרוך באיתחולים חוזרים ונישנים), עבודה עם אובייקט המערכת vision.EdgeDetector ומתודת step אמורה להיות יעילה יותר. בנוסף, כמה System Objects המשתייכים ל-Communications System Toolbox ול-Phased Array System Toolbox ניתנים להאצה על ידי שימוש ב-GPU (הכרטיס הגרפי של המחשב), תוך שינוי מזערי של הקוד הכתוב.  אם כך, System Objects אמורים להביא לקיצור זמני הריצה של אלגוריתמים ! 

System Objects עשויים להקל על אלה מכם המנסים לבצע סימולציות Fixed-Point בסביבת MATLAB, וכן על מי שמנסה להמיר בקלות קוד MATLAB לקוד C או HDL. כבר כיום יש תמיכה ביצירת קוד C/HDL מתוך מגוון System Objects - למשל, כל
ה-System Objects שבגרסת R2012b של ה-Communications System Toolbox נתמכים ליצירה אוטומטית של קוד C. בהקשר זה, חשוב לציין כי החל מגרסת R2011b יכול כל אחד לפתח System Objects משלו, אשר יוכלו להתממשק אל אלה שפיתחה MathWorks, והחל מגרסת R2012a ניתן להמיר לקוד C כאלה אובייקטי מערכת שהמשתמש פיתח.


System Objects הוא נושא שאני ממליץ לכל אחד להתחיל ללמוד אותו וליישם אותו, שכן כבר היום הם נכללים בחלק גדול מכלי MathWorks - פרט להיותם חלק ממשפחת ה-System Toolboxes (אותם ארבעה כלים שהוזכרו לעיל ואשר קיימים מגרסת R2011a), יש כיום אובייקטי מערכת גם בכלים Image Acquisition Toolbox (אובייקט המאפשר רכישת תמונה הנתמך ליצירה אוטומטית של קוד C) ו-HDL Verifier (אובייקט המאפשר לבצע סימולציות FPGA-in-the-loop תוך שימוש ב-MATLAB ו-FPGA בלבד). וכפי שנכתב קודם, MathWorks מתכוונת להמשיך לפתח את הנושא הזה בשנים הבאות.

לרשימת ה-System Objects בארבעת ה-System Toolboxes המוזכרים לעיל, לחצו על הקישורים הבאים:
DSP
Computer Vision
Communications
Phased Array

יום ראשון, 11 בספטמבר 2011

גרסה חדשה, לכבוד השנה העברית החדשה


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


בין היכולות החדשות במשפחת מוצרי MATLAB:

• קיצור משך עליית תוכנת MATLAB על גבי סביבת Windows, בדגש על התקנות רשת.

• ממשק הודעות שגיאה ידידותי יותר למשתמש.

• הוספת אפשרות לשינוי שמות פונקציות ומשתנים ב-MATLAB בצורה אוטומטית, מבלי להיחשף לסיכונים הכרוכים בשימוש ב-Find & Replace.

• פונקציית matfile ב-MATLAB ליצירת אובייקטי MAT File המאפשרים טעינה של מקטעי משתנים מתוך MAT Files. הדבר שימושי כאשר ב-MAT File שמור משתנה גדול, ומעוניינים לטעון רק חלק ממנו ל-Workspace.

• כלי אינטראקטיבי בשם  Spreadsheet Import Tool לייבוא מידע מתוך קבצי Excel וקבצי CSV לתוך MATLAB, המאפשר להגדיר כללי טיפול בנתונים שאינם מספרים (הכלי מחליף את ה-Import Wizard).

• אפשרות לייצר System Objects מותאמים אישית.

• ב-Parallel Computing Toolbox נוספו מעל 30 פונקציות הניתנות למיקבול על גבי ה-GPU (סה"כ קיימות מעל 150) וכן נוספה יכולת להריץ על גבי ה-GPU אפליקציות אשר קומפלו באמצעות ה-MATLAB Compiler.

• מספר ה-worker-ים המקומיים המרבי האפשרי בשימוש ב-Parallel Computing Toolbox עלה מ-8 ל-12.

• פונקציית blockproc של ה-Image Processing Toolbox, המשמשת לעיבוד תמונות גדולות במיוחד, יכולה להשתמש ב-Parallel Computing Toolbox על מנת להאיץ את ביצועיה.

• ב-MATLAB Coder נוספה היכולת לייצר קוד C++/C גם מתוך קוד MATLAB בו מתבצעת מחיקה של שורות/עמודות מטריצה.

• תמיכה בטכנולוגיית Bluetooth ב-Instrument Control Toolbox, כלי המאפשר לתקשר עם מכשירי מדידה וציוד בדיקה ולשלוט עליהם.

• הרחבת התמיכה של ה-Data Acquisition Toolbox בהתקני NI.

 
בין היכולות החדשות במשפחת מוצרי Simulink:


• אפשרות ליצור mask כמעט לכל בלוק ובלוק ב-Simulink (ולא רק לתת-מערכות), על מנת לייצר Icon ותיבת דיאלוג מותאמת אישית.

• אפשרות לשנות את אופן הצגת הגרפים בבלוק ה-Scope.

Simulink Projects - כלי אינטראקטיבי לניהול קבצים הרלוונטיים לפרויקט כלשהו ב- Simulink ולעבודה עם תוכנות ניהול גרסאות. באמצעות הכלי ניתן ליצור סביבה משותפת לכל חברי הצוות העובדים על הפרויקט, דבר המקל על העבודה בגישת Model-Based Design ומייעל אותה.

Simulink Code Inspector – כלי חדש לאוטומציה של סקירות-קוד עבור תקני בטיחות.

• ב-Simulink Coder, כלי הממיר מודלי Simulink ודיאגרמות Stateflow לקוד C++/C, נוספה אפשרות לייצר קוד multitasking אשר יכול לרוץ במקביל על מעבדים מרובי ליבות הפועלים על מערכות ההפעלה Windows, Linux או MAC OS X.

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


האם כבר יצא לכם להתנסות בחידושים הללו? האם גיליתם חידושים משמעותיים אחרים שלא פורטו כאן? האם החידושים האלה נתנו לכם רעיונות לדברים נוספים שהייתם רוצים לראות בכלי MathWorks ?