יום חמישי, 15 במרץ 2012

מה חדש ב-MATLAB ו-Simulink בגירסת R2012a ?


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


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

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

Image Processing Toolbox – התווספה יכולת לבצע רגיסטרציה אוטומטית של תמונות בעזרת intensity-metric optimization, וכן נוספו פונקציות למציאת מעגלים בתמונה והצגתם.

Computer Vision System Toolbox – הכלי המקל על תכנון וסימולציה של מערכות ראיה ממוחשבת ומערכות עיבוד וידאו ותמונה תומך כעת גם בגילוי פנים באמצעות אלגוריתם Viola-Jones, גילוי פיצ'רים בשיטת MSER, עקיבה בגישת CAMShift וחישוב Integral Image. הכלי אינו מצריך עוד את ה-DSP System Toolbox וה-Signal Processing Toolbox לצורך פעולתו.

Image Acquisition Toolbox – הכלי המאפשר להזין בקלות את סביבות MATLAB ו-Simulink במידע ויזואלי (וידאו/תמונה) על ידי מגוון מצלמות ו-frame grabbers כולל כעת System Object הניתן להמרה אוטומטית לקוד C באמצעות ה-MATLAB Coder.

MATLAB Compilerה-MCR ניתן כעת להורדה מהאינטרנט, דבר המקל על הפצת אפליקציות וקומפוננטות מקומפלות לעמדות בהן אין התקנה של MATLAB. מעבר לכך, הכלי תומך במספר פונקציות נוספות המשתייכות ל-Computer Vision System Toolbox.

MATLAB Coder – הכלי המאפשר המרה ישירה של קוד MATLAB לקוד C מאפשר כעת גם המרה של System Objects שפותחו על ידי המשתמש.

HDL Coder – הכלי, אשר נקרא בעבר Simulink HDL Coder ואיפשר המרת מודלי Simulink לקוד HDL, מאפשר כעת גם המרה ישירה של קוד MATLAB לקוד HDL מטיפוס Fixed-Point לצורך קבלה מהירה של אבטיפוס ולשם מימוש אלגוריתמים על רכיבי ASIC ו-FPGA. הנ"ל אמור גם לגבי System Objects. הכלי אינו מצריך עוד Simulink Fixed-Point או Simulink לצורך פעולתו (דורש רק MATLAB Coder ו-Fixed-Point Toolbox).

HDL Verifier – מאפשר שימוש חוזר ב-test benches קיימים ב-MATLAB ו-Simulink לצורך וריפיקציה של קוד HDL על ידי קו-סימולציה עם סימולטורי HDL או בדיקות hardware-in-the-loop עם רכיבי FPGA. הכלי מחליף את ה-EDA Simulator Link וכולל כעת תמיכה בביצוע בדיקות hardware-in-the-loop גם לרכיבי FPGA של חברת Altera (חמישה-עשר דגמי FPGA של Altera ו-Xilinx נתמכים).

Statistics Toolbox – מכיל ממשק משופר לביצוע התאמה, חיזוי והצגה באמצעות רגרסיה לינארית, לינארית-מוכללת, ולא-לינארית.

Communications System Toolbox – מכיל כעת מודלים לערוצי LTE MIMO, ומאפשר ניצול של הכרטיס הגרפי (GPU) שבמחשב לצורך האצת סימולציות של מגוון System Objects הרלוונטים לתכנון, סימולציה וניתוח השכבה הפיזית
 (Physical Layer) של מערכות תקשורת.

Parallel Computing Toolbox – מאפשר כעת האצת ביצועים של מגוון פונקציות ה-FFT (על כל הסינטקסים שלהן) ופונקציות נוספות על ידי שימוש בכרטיס הגרפי (GPU) שבמחשב. בנוסף, פונקצית arrayfun שודרגה.



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

Simulink – מאפשר כעת הרצה של מודלים על חומרה זולה דוגמת LEGO MINDSTORMS NXT ו-BeagleBoard ישירות מתוך Simulink. בנוסף, חלון ה-editor של בלוק ה-MATLAB Function משולב כעת עם חלון ה-editor הרגיל של MATLAB, הורחבה התמיכה במערכות source control באמצעות ה-Source Control Adapter SDK, נוספה היכולת להוסיף legends בבלוק ה-Scope, הצטרפה האפשרות לשמור מודלים וספריות בפורמט הקבצים החדש של Simulink הנקרא SLX (חוסך מקום בזיכרון, מספק מידע רב למערכות הצגת קבצים, חוסך בזמן ביישומים מסוימים, וצפוי להיות הפורמט היחיד החל מ-R2012b) והתווסף ה-Signal Hierarchy Viewer.

Simulink Verification & Validation – לכלי המאפשר, בין היתר, שמירה על עקביות במודל אותו מפתחים, נוספה יכולת להחריג בלוקים ותת-מערכות כך שלא ייבדקו על ידי ה-Model Advisor, דבר אשר מקצר את משך פעולתו.

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

Real-Time Windows Target – מאפשר הרצת מודלים של Simulink ב-
real-time בסביבת Windows תוך שימוש ב-Normal Mode, לצורך rapid prototyping או בדיקות hardware-in-the-loop
. כלומר, הכלי אינו מצריך עוד את ה-MATLAB Coder וה-Simulink Coder לצורך פעולתו, שכן פרט ל-External Mode, ניתן להשתמש כעת גם ב-Normal Mode.


עוד משהו?

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

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

יום חמישי, 1 במרץ 2012

CAD קטן | על המרת מידע בין תוכנות CAD ותוכנת MATLAB


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


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

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

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

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

תמונה 1: שמירת המודל בפורמט STL

2. יש להוריד מתוך אתר שיתוף הקבצים של MathWorks את הקובץ stlread.m

תמונה 2: הורדת הקובץ מאתר שיתוף הקבצים של MathWorks

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

תמונה 3: קוד המשמש לקריאת הנתונים והצגת המודל בתוך MATLAB

ועל ידי השימוש בפונקציה patch, התוצאות ב-MATLAB נראות כך:

תמונה 4: הצגת הנתונים ב-MATLAB על ידי שימוש בפקודת patch

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

תמונה 5: צילום מסך מתוך SolidWorks

האם העליתם פונקציה משלכם לאתר שיתוף הקבצים של MathWorks? האם יש פונקציה מסויימת שהורדתם והפכה את החיים שלכם לקלים יותר? האם השתמשתם בעבר ב-SimMechanics? ומה לגבי פונקציית patch?