יום רביעי, 12 בנובמבר 2014

MATLAB לא קודר | חדשות משמחות בנושא יצירה אוטומטית של קוד C מתוך MATLAB


לפני כ-3 שנים וחצי שחררה חברת MathWorks כלי בשם MATLAB Coder, המסייע בהמרה אוטומטית של אלגוריתמי MATLAB לקוד C/C++. הדבר הינו כמובן בעל שימושים רבים – מהאצת ביצועים של אלגוריתמי MATLAB, דרך יצירת ספריות ו-Executables המסוגלים לפעול על מחשבים בהם לא מותקן MATLAB, ועד ליצירת קוד אשר יכול לפעול על מעבדי-אות (DSPs).

בראשית הדרך, לא כל הפונקציות ב-MATLAB ובטולבוקסים השונים נתמכו על ידי הכלי, אלא רק subset של שפת MATLAB, סדר גודל של כ-600 פונקציות, אופרטורים ו-System Objects. מגרסה לגרסה, כתוצאה מפידבקים שנאספו מהמשתמשים, הגדילה MathWorks את כמות האלגוריתמים בהם הכלי תומך, והאמת היא שאני כבר הפסקתי לבדוק מה הכמות המדויקת שנתמכת. לאחרונה, בעקבות שאלה ששאלתי, התברר לי שהכמות המדויקת שנתמכת בגרסה האחרונה כבר עומדת על כ-1200 פונקציות, אופרטורים ו-System Objects – כלומר – כפליים מהמצב שהיה כאשר הכלי שוחרר לראשונה (לחצו לרשימה המלאה).

בין היתר, התברר לי שהכלי היום תומך ביצירת קוד C/C++ מתוך

כ-200 אלגוריתמים לעיבוד אות (כמעט כולם מתוך ה-DSP System Toolbox וה-Signal Processing Toolbox),
כ-170 פונקציות סטטיסטיות (כמעט כולן מתוך ה-Statistics Toolbox),
כ-150 אלגוריתמי עיבוד תמונה, ראיה ממוחשבת ורכישת וידאו ותמונה (כמעט כולם מתוך ה-Computer Vision System Toolbox, Image ProcessingToolbox ו-Image Acquisition Toolbox),
כ-140 אלגוריתמים המשמשים לתכנון, סימולציה וניתוח של מערכות מכ"מ, מערכות Ultrasound ומערכות תקשורת מרובות-אנטנות (מתוך ה-Phased Array System Toolbox),
וכ-120 אלגוריתמים המשמשים לתכנון, סימולציה וניתוח של Physical Layer של מערכות תקשורת (מתוך ה-Communications System Toolbox).

אני מודה שנדהמתי מהעלייה הדרמטית בכמות האלגוריתמים שנתמכים על ידי ה-MATLAB Coder, אשר עם השנים גם השתדרג בממשק משתמש גרפי נוח המקל על תהליך יצירת הקוד ואפילו בפונקציה שמאפשרת להעריך מראש כמה פשוטה תהיה מלאכת המרת האלגוריתם שלכם מ-MATLAB ל-C/C++. אני מזמין אתכם לנסות את הכלי (ניתן לשלוח מייל ל- royf@systematics.co.il), ואם יש פונקציה מסוימת שאינה נתמכת כיום ואתם מעוניינים שתיתמך, אפשר להוסיף תגובה למטה.