יום שני, 23 בספטמבר 2013

R2013b מוכנה להורדה !


בחודש ספטמבר שוחררה גרסה חדשה של כלי MathWorks, גרסת R2013b, הכוללת עדכונים ל-MATLAB  ו-Simulink, ושדרוגים + תיקוני באגים לכ-80 כלים אחרים.

בין היכולות החדשות במשפחת מוצרי MATLAB:
* MATLAB – שני Data Types חדשים (לחצו לסרטון) – (1) מערך categorical למידע סדור ולא-סדור (2) מיכל מידע table לניהול, אחסון וסינון מידע מעורב (נומרי, טקסט, תאריך) המאורגן בצורת טבלה; פונקציית timeit להערכה רובסטית של זמן הביצוע של פונקציה; שיפור ביצועים של מגוון פונקציות.
* MATLAB Compiler גרסה משמעותית, הכוללת: ממשקי משתמש חדשים ליצירת אפליקציות Stand-alone ו-DLL-ים (ה-deploytool הוחלף ב-applicationCompiler וב-libraryCompiler); אפשרות להוסיף icon לאפליקציה המקומפלת ו/או ל-installer שלה; יכולת ליצור installer מותאם אישית, כולל splash screen אשר יופיע במהלך תהליך ההתקנה; url חדש להורדה אוטומטית של MCR מתאים מאתר MathWorks.
* Image Processing Toolbox יכולת האצה של 22 פונקציות נוספות (וסה"כ – 33) באמצעות כרטיס המסך (GPU) על ידי ה-Parallel Computing Toolbox, וביניהן edge, imresize, bwmorph ו-medfilt2; התמרות גיאומטריות דו-מימדיות חדשות ופונקציה חדשה (fitgeotrans) להתאמת התמרה גיאומטרית לאוסף נקודות בקרה.
* Parallel Computing Toolbox פרט ל-22 הפונקציות המוזכרות לעיל מתוך הכלי הקודם, פונקציות MATLAB נוספות ניתנות כעת להאצה באמצעות ה-GPU; אינטראקציה קלה יותר עם מאגר workers מקביליים באמצעות פקודת parpool (מחליפה את matlabpool); פתיחה אוטומטית של מאגר workers בעת הפעלת קוד העושה שימוש ב-parfor או spmd; ב-MATLAB Coder נוספה תמיכה בפונקציית parfor לצורך יצירת קוד Stand-alone המסוגל לפעול על מספר ליבות במקביל.
* Statistics Toolbox כולל כעת מודלים של רגרסיית Linear mixed-effects; פונקציות פילוגי הסתברות וסטטיסטיקה תאורית הנכללות בו ניתנות להמרה אוטומטית לקוד C/C++ באמצעות MATLAB Coder (ובסך הכל יותר מ-100 פונקציות של ה-Statistics Toolbox נתמכות).
* Image Acquisition Toolbox הרחבת התמיכה ב-Kinect על Windows; אפשרות לקימפול ה-System Object של רכישת התמונה באמצעות ה-MATLAB Compiler.

* Curve Fitting Toolbox אפליקציית ה-Curve Fitting תומכת כעת ב-Linear least-squares fitting גם עבור משוואות המוגדרות על ידי המשתמש.
* Instrument Control Toolbox תומך בתקשורת עם מעגלים משולבים באמצעות פרוטוקול SPI.
* Financial Toolbox מאפשר כעת אופטימיזציה של תיקי השקעות בשיטת Mean-Absolute Deviation (MAD). 

בין היכולות החדשות במשפחת מוצרי Simulink:
* Simulink – שיפורים ב-Editor (אפשרות לבצע preview לתוכן של תת-מערכת, comment through blocks, וחיווי ברור במקרה של קווי סיגנל החוצים זה את זה); בלוק חדש לשילוב System Objects שנכתבו ב-MATLAB לתוך מודלים של Simulinkאפשרות לייצר ממשקי בלוקים מותאמים אישית עשירים יותר באמצעות ה-Mask Editor החדש; שיפור התמיכה בחומרת Arduino; מידול פשוט יותר של תכנונים ב-single precision; קומפיילר LCC חינמי הנתמך על פלטפורמת Windows 64 bit. 
* Simscape – בכלי המידול והסימולציה של מערכות פיזיקליות רב-תחומיות הועשרה השפה בהגדרות נוספות, המאפשרות ייבוא, חיבור והפרדה לתת רכיבים ומכלולים שונים; מתאפשרת כעת הצגת סטטיסטיקה על המודל; נוסף domain חדש המאפשר מידול של מערכות זורמים תרמיים (Thermal Liquid) – כגון שינויי טמפרטורה לנוזלים במערכות צנרת, חימום של מפעילים כתוצאה מחיכוך, ומעבר חום במערכות מורכבות כמו מחליפי חום.
* SimPowerSystems – דור שלישי למוצר המאפשר מידול, סימולציה ותכנון של מערכות הספק חשמליות. הדור החדש מאפשר שליטה גבוהה יותר על רכיבים וספריות, מאפשר שינוי בלוקים קיימים בעזרת שפת Simscape, ומכיל דוגמאות ובלוקים נוספים בתחום מכונות ושנאים. בעלי רישיון ל-SimPowerSystems יכולים לעבוד באותם המודלים גם עם הדור השלישי וגם עם הדור השני.
* SimMechanics – לדור השני של המוצר המאפשר מידול וסימולציה של מערכות מכאניות נוספה היכולת ליצור תנועה מאולצת במפרקים השונים. כעת ניתן להשתמש במודלים שתוכננו בדור השני בכדי לאלץ תנועה מסויימת, ולמדוד כוחות הנוצרים במפרקים השונים, ובכך לתכנן מערכות הנעה מתאימות.
* Stateflow – בכלי המידול והסימולציה של תרשימי זרימה, מכונות מצבים וטבלאות אמת נוספה יכולת מובנית לשימוש במושגי זמן כתנאי מעבר בין מצבים; מתאפשרת כעת "השלמה באמצעות Tab" למילים שמורות בתוך Stateflow; נוספה תצוגה מוקדמת (preview) לתכנים בתוך דיאגרמות Stateflow.
 
בין היכולות החדשות במשפחת ה-System Toolboxes:
* Computer Vision System Toolbox – לכלי המשמש לעיבוד וידאו, עיבוד תמונה וראיה ממוחשבת בסביבות MATLAB ו-Simulink נוספו פונקציות ואפליקציה לכיול מצלמה (שערוך הפרמטרים האינטרינזים, האקסטרינזים, ועיוות העדשה); נוסף מחלץ פיצ'רים בשיטת Histogram of Oriented Gradients (HOG); נוספה תמיכה בהמרה אוטומטית לקוד C  באמצעות ה-MATLAB Coder עבור 12 פונקציות ו-System Objects וביניהם detectSURFFeatures, disparity, detectMSERFeatures, detectFASTFeatures, extractFeatures, vision.CascadeObjectDetector, vision.PeopleDetector ו-vision.PointTracker.
* Phased Array System Toolbox – הכלי משמש לתכנון, סימולציה וניתוח של מערכות מכ"מ, מערכות Ultrasound ומערכות תקשורת מרובות-אנטנות, וכעת רוב הפונקציות וה-System Objects הנכללות בו ניתנות להמרה אוטומטית לקוד C/C++ באמצעות ה-MATLAB Coder. 

בין היכולות החדשות בתחום ה-Code Generation:
* MATLAB Coder – הכלי המאפשר יצירת קוד C/C++ בצורה אוטומטית מתוך קוד MATLAB תומך כעת בעוד מגוון פונקציות ו-System Objects, וביניהן 12 מה-Computer Vision System Toolbox ופונקציות ו-System Objects מה-Phased Array System Toolbox ומה-Statistics Toolbox; נוספה תמיכה בפונקציית parfor לצורך יצירת קוד Stand-alone המסוגל לפעול על מספר ליבות במקביל.
* HDL Coder – הכלי המאפשר יצירת קוד VHDL/Verilog מתוך MATLAB ו-Simulinl תומך כעת ביצירת קוד HDL מתוך System Objects שפותחו על ידי המשתמש; הכלי מאפשר כעת יצירת קוד בצורה אינקרמנטלית ממודלים העושים שימוש ב-Model Reference; נוספה תמיכה ביצירת קוד עבור Xilinx Zynq ו-ZedBoard.

היכולות לעיל הן רק חלק מאלה שנוספו בגרסה החדשה. למידע מלא על
R2013b, בקרו בעמוד הגרסה החדשה באתר MathWorks או קראו את ה-Release Notes.
מה דעתכם על הגרסה החדשה? מאיזה פיצ'ר התלהבתם במיוחד? האם יש חידוש משמעותי עבורכם שלא צויין למעלה?
 

יום שני, 19 באוגוסט 2013

חוויית משתמש

הבלוג הזה פועל כבר שלוש וחצי שנים, ובכל התקופה הזו נמנעתי מלקדם אירועים טכניים של חברת סיסטמטיקס, מעסיקתי, המפיצה של כלי MATLAB & Simulink בישראל. אבל האירוע שמתוכנן ל-10/9/13 הוא באמת משהו מיוחד.

מידי שנה סיסטמטיקס מקיימת עשרות אירועים טכניים למשתמשי MATLAB ו-Simulink בישראל, ובכולם מרצים מהנדסי האפליקציה של החברה. אבל ב-10/9/13 – מהנדסי האפליקציה של החברה יישבו בקהל, בשעה שעל הבמה יעמדו לא אחרים מאשר המשתמשים בכלים ! וליתר דיוק – למעלה מ-20 משתמשים בכלים מחברות שונות !

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

ההשתתפות באירוע, כמו תמיד, היא ללא עלות, אך מחייבת הרשמה מראש. למידע נוסף על הכנס ולהרשמה – לחצו כאן.

 

יום ראשון, 28 ביולי 2013

CV or not CV, זו השאלה ! | על OpenCV ו-MATLAB

OpenCV היא ספרית פונקציות לביצוע משימות ראיה ממוחשבת בזמן אמת, הכוללת מעל 2500 אלגוריתמים מתקדמים. משמעות הדבר היא שב-OpenCV יש יותר פונקציות לעיבוד תמונה מאשר בסביבת MATLAB, והדבר מקבל חשיבות בהקשרים של ראיית סטריאו וביצוע משימות ראיה ממוחשבת על GPU. בנוסף, OpenCV, הכתובה ב-C++, היא מהירה יחסית, והשם שלה כמובן מרמז על כך שהיא open source, כלומר – חינמית. אבל, והנה מגיע ה"אבל" - הממשק שלה נוראי, וגם התיעוד לא משהו...בנוסף, OpenCV זו "רק" ספריה של פונקציות, בעוד ש-MATLAB היא גם אוסף של פונקציות וגם סביבת עבודה. ומכיוון שחוקרים ומהנדסים רבים אוהבים להשתמש בסביבה הזו, ועדיין רוצים להינות גם מהיכולות של OpenCV, נשאלת השאלה האם ניתן לאכול את העוגה וגם להשאיר אותה שלימה? כלומר – האם ניתן לשלב בין OpenCV ו-MATLAB ? התשובה, כמובן, היא "כן".
כידוע, ניתן לקרוא לקוד C/C++ מתוך סביבת MATLAB באמצעות הפיכתו ל-MATLAB Executable תוך שימוש בפקודה mex. ובצורה דומה, תוך שימוש בממשק ה-MEX ניתן לקרוא גם ל-OpenCV מתוך MATLAB, דבר המאפשר שימוש באלגוריתמים החדשים שב-OpenCV (מתעדכנת כל 3 חודשים) וכן מאפשר להינות הן מהמהירות של האלגורתמים שבה והן מקלות השימוש של MATLAB.
ומהכיוון ההפוך, ניתן להתממשק מסביבת OpenCV לקוד / ספריה אשר נוצרו מקוד MATLAB . מדובר כמובן בקוד / ספריה שהפכו מקוד MATLAB לקוד C++ באמצעות הכלי MATLAB Coder.

למידע נוסף, בקרו בעמוד MATLAB and OpenCV באתר MathWorks.
האם אתם משתמשים ב-OpenCV ? ניסיתם לקרוא לו מתוך MATLAB ? ואת הכיוון ההפוך ניסיתם ?

יום שני, 3 ביוני 2013

עצי תמחור באמצעות MATLAB

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

עצים הפכו בשנים האחרונות מאוד פופולריים במגוון תחומים בעולם הפיננסי ומשמשים לרוב למידול מכניקת שוק ההון ולמידול ריביות. מגוון המודלים והישומים גדל כל הזמן יחד עם המורכבות של מודלים אלו. בין הנפוצים ביותר ניתן לציין את עציCox-Ross-Rubinstein  (CRR),  Heath-Jarrow-Morton (HJM) ,Black-Derman-Toy (BDT) ,Black-Karasinski (BK) ו- Hull-White (HW), בו יעסוק פוסט זה.
מודל HW ממדל ריבית עתידית, ובצורתו הבסיסית משתייך למשפחת מודלים "חסרי ארביטרז' ". המודל עם פאקטור אחד הוא מהצורה:
בפוסט זה לא ניכנס למתמטיקה שמאחורי המודל, אלא נדגים בניה פשוטה שלו ושימוש מוגבל בו. על מנת לבנות עץ HW  ב- MATLAB  יש להגדיר שלושה מבנים:
1.      תהליך תנודתיות הריבית יוגדר בעזרת פונקצית hwvolspec.
2.      מבנה הריבית בשוק יוגדר באמצעות פונקצית  intenvset.
3.      מבנה זמן  (valuation ו- maturity) יוגדר באמצעות פונקצית hwtimespec.
לאחר מכן, פונקצית hwtree תבנה עבורנו את העץ, שאותו ניתן להציג באמצעות הפונקציה treeviewer, והנה התוצאה (ניתן ללחוץ על התמונה להגדלה):
ברגע שיש לנו עץ, אנו יכולים לתמחר מוצרים מובני ריבית שונים, לדוגמה תיק המכיל שתי אגרות חוב ואג"ח עם אופצית call (Option Embedded Bond), כמו התיק הבא (ניתן ללחוץ על התמונה להגדלה):


תיק זה ניתן לתמחור באמצעות פונקצית

hwprice, ואת הנגזרים של התיק ניתן לקבל באמצעות פונקצית hwsens : 
ה-Financial Instruments toolbox מכיל מודלים לעצי תמחור אחרים שהוזכרו למעלה ולעצים נוספים - Implied Volatility tree ו- Leisen-Reimer. תהליך בניית עצים אלו דומה מאוד לתהליך שתואר לעיל עבור HW.