יום שני, 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.

יום חמישי, 9 במאי 2013

R2013a מחכה לכם !


בחודש מרץ שוחררה גרסה חדשה של כלי MathWorks, ראשונה מאז השקת MATLAB 8 ו-Simulink 8, והיא כוללת עדכונים ל-MATLAB  ו-Simulink, שני כלים חדשים, ושדרוגים + תיקוני באגים ל-82 כלים אחרים.

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

* MATLAB – קל יותר לכתוב ולהריץ unit tests כדי לפתח קוד רובסטי יותר (קישור לסרטון, קישור לתיעוד); שיפורי ביצועים לפונקציות fft ו-permute; פונקציות חדשות לפיצול ואיחוד סטרינגים (strsplit, strjoin); מירקור מילות חיפוש בעמודי התיעוד שמוצגים כתוצאה מהחיפוש (ניתן לבטל את המירקור על ידי לחיצה על Esc); אפשרות לבצע פעולות כמו Zoom in ושמירה לתוך קובץ מתוך עמודי תיעוד (באמצעות הלחצן הימני של העכבר); טבלת תוכן עניינים המקלה על הניווט בעמודי התיעוד (פתיחה על ידי לחיצה על Contents בפינה השמאלית העליונה).

* Image Processing Toolbox אפשרות להמרה אוטומטית של 10 פונקציות נוספות על ידי ה-MATLAB Coder לקוד C  עבור PC; יכולת האצה של 11 פונקציות באמצעות כרטיס המסך (GPU) על ידי ה-Parallel Computing Toolbox; ביצוע סגמנטציה תוך שימוש ב-Active Contours.

* Parallel Computing Toolbox האצה של 11 פונקציות מעולם עיבוד התמונה באמצעות כרטיס המסך (GPU); תוספת פונקציות אחרות הניתנות להאצה באמצעות ה-GPU; יכולת להפעיל קוד CUDA  מתוך פונקציות MEX במערכות הפעלה מסוג  64 ביט.

* Image Acquisition Toolbox בכלי המאפשר הזרמת וידאו ותמונות ממגוון התקנים ישירות לתוך MATLAB ו-Simulink  נוספה תמיכה ברכישת תמונות ממערכת חישת-התנועה Kinect בסביבת Windows (קישור למידע נוסף, קישור לפוסט ישן יותר הקשור לנושא).

* Statistics Toolbox כולל כעת את פקודות ה-SVM לסיווג בינארי (svmclassify ו- svmtrain, אשר בעבר היו חלק מה-Bioinformatics Toolbox).

* Trading Toolbox כלי חדש המאפשר גישה לשערים של מכשירים פיננסים ושליחה אוטומטית של פקודות למערכות מסחר בזמן אמת (קישור לעמוד הכלי).

* MATLAB Distributed Computing Server בכלי המאפשר להאיץ ביצועים של תוכניות MATLAB ומודלי Simulink על ידי אשכול מחשבים (Cluster), ענן (Cloud) או מחשוב שריגי (Grid) – התווספו workers לבעלי רישיונות לכלי (ללא תשלום נוסף). לקוחות חדשים יוכלו להינות ממחירים מוזלים על חבילות ה-workers השונות.

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

* Simulink – שדרוג יועץ הביצועים (Performance Advisor) המראה כיצד ניתן לשפר את מהירות הסימולציה; ביצועי סימולציה משופרים למקרה בו בוחרים באפשרות לחזור אחורה בזמן הסימולציה; אפשרות להחלפת סדר ה-Tab-ים בחלון המודל (ע"י גרירת Tab-ים למיקומים הרצויים); אפשרות לבצע masking לבלוק ה-MATLAB Function בצורה ישירה (אין עוד צורך להכניסו לתוך תת-מערכת); תמיכה built-in בחומרותRaspberry Pi  ו- Gumstix Overo (בנוסף לתמיכה שהיתה קיימת ב-Lego Mindstorm NXT, Beagleboard, Arduino ו-PandaBoard, חפשו כאן את החומרה שעל התמיכה בה תרצו לקרוא עוד).

* SimRF – בכלי המאפשר מידול וסימולציה של מקלטים-משדרים אלחוטיים במערכות תקשורת ומערכות מכ"מ, מתאפשרות כעת טעינה וסימולציה מהירות יותר של מודלים המכילים בלוקים מספרית Circuit Envelope, הודות לפותרן חדש.

בין היכולות החדשות במשפחת ה-System Toolboxes:

* Communications System Toolbox – לכלי המקל על תכנון, סימולציה וניתוח של מערכות תקשורת ב-MATLAB ו-Simulink נוספו System Objects חדשים: Sphere Decoder ו- Constellation Diagram.

* Computer Vision System Toolbox – לכלי המשמש לעיבוד וידאו, עיבוד תמונה וראיה ממוחשבת בסביבות MATLAB ו-Simulink נוסף אלגוריתם חילוץ הפיצ'רים FREAK, המבוסס על מערכת הראיה האנושית ואשר נמצא כמהיר יותר, חסכוני יותר בזיכרון ורובסטי יותר מ-SIFT ו-SURF; ניתן כעת לאמן את ה-Cascade Object Detector לקבלת גלאי המסוגל לאתר אובייקטים שונים בתמונה, מעבר לאובייקטים כמו פנים, אף, עיניים, פה ופלג גוף עליון (קישור לתיעוד, קישור ל-GUI בנושא); נוספו פונקציות חדשות המבצעות פעולות שבעבר בוצעו רק על ידי System Objects (גילוי פינות, שערוך התמרה גיאומטרית, טקסט וגרפיקה).

* DSP System Toolbox – לכלי המקל על תכנון וסימולציה של מערכות עיבוד אות נוספו מגוון System Objects, וביניהם שניים עבור סינון אדפטיבי.

* Phased Array System Toolbox – הכלי המשמש לתכנון, סימולציה וניתוח של מערכות מכ"מ, מערכות Ultrasound ומערכות תקשורת מרובות-אנטנות עבר שדרוג משמעותי (קישור לפרטים המלאים), והוא מאפשר כעת למדל מערכת phased-array קצה-לקצה ולעבד מידע מכ"מ נרכש תוך שימוש בשיטות חדשות, וכן הוא מספק Apps חדשים.

בין היכולות החדשות בתחום ה-Code Generation:

* MATLAB Coder – הכלי המאפשר יצירת קוד C/C++ בצורה אוטומטית מתוך קוד MATLAB תומך כעת בעוד מגוון פונקציות, וביניהן, כמפורט למעלה, 10 פונקציות מתוך ה-Image Processing Toolbox.

* Fixed-Point Designer – כלי חדש, המשלב את יכולות ה-Fixed-Point Toolbox וה-Simulink Fixed Point, ומקל על פיתוח אלגוריתמי Fixed-Point ב-MATLAB ו-Simulink. בין היתר, הכלי מאפשר המרה אוטומטית ומהירה של קוד MATLAB ב-Floating Point לקוד C ב-Fixed-Point (יש צורך ברישיון גם ל-MATLAB Coder).

היכולות לעיל הן רק חלק מאלה שנוספו בגרסה החדשה. למידע מלא על
R2013a, בקרו בעמוד הגרסה באתר MathWorks.

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