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

יום ראשון, 26 ביוני 2016

GUI ליצירת GUIs

ממשק משתמש גרפי (GUI) הוא חלק בלתי נפרד ממערכות תוכנה רבות. גם בשפת MATLAB ניתן לכתוב ממשקי משתמש המפעילים פונקציות MATLAB, אבל למה לכתוב, אם אפשר להשתמש בממשק משתמש אינטראקטיבי ליצירת ממשקי משתמש ?

למי שלא מכיר, את ה-GUI ליצירת GUI-ים אפשר להעלות באמצעות הפקודה guide.

נבחר באופציה Blank GUI לצורך יצירת GUI חדש, ולצורך הדוגמה – נכין GUI עם מערכת צירים בה יוצג גרף של 10 מספרים אקראיים שיוגרלו ויוצגו לאחר לחיצה על לחצן ייעודי בממשק המשתמש.
את מערכת הצירים נצייר בעזרת לחצן ה-Axes (חץ ירוק), ואת הלחצן שבעקבות לחיצה עליו יוגרלו המספרים האקראיים ויוצגו על מערכת הצירים – נצייר בעזרת לחצן ה-Push Button (חץ אדום):

GUIDE - ניתן ללחוץ להגדלה

כעת, אפשר ליהנות מיכולת נפוצה בסביבת MATLAB, שהיא האפשרות לקבל קוד MATLAB שקול לכל הפעולות שביצענו בצורה אינטראקטיבית בעזרת העכבר. לשם כך נלחץ על לחצן ה-Run Figure המסומן בעיגול כחול בתמונה למעלה (יש לאשר את ההודעה המוצגת וכן לבחור שם ל-GUI).

אם נלחץ על לחצן ה-Push Button ב-GUI שנוצר – לא יקרה דבר – וזה הגיוני בהחלט לאור העובדה שטרם הוגדר מה בדיוק צריך לקרות בעקבות לחיצה עליו. על מנת להגדיר את הפעולה שצריכה להתבצע (הגרלת 10 מספרים אקראיים והצגתם) – אפשר לחפש בקוד ה-MATLAB שנוצר בצורה אוטומטית היכן נמצאת השורה בה יש לכתוב את שורות הקוד הרלוונטיות, אבל יותר פשוט – לחזור לסביבה בה יצרנו את ה-GUI, ללחוץ עם הלחצן הימני של העכבר על ה-Push Button, ולבחור View Callbacks ואז Callback. בעקבות כך – תסומן ב-m file שהופק שורת הקוד שלאחריה יש לכתוב:
plot(rand(10,1))
את ה-GUI המעודכן אפשר לטעון באמצעות הרצת קוד ה-MATLAB שהרגע נערך (F5), והנה התוצאה:


כמובן שניתן לקמפל את ה-GUI הנ"ל לאפליקציית Stand Alone (קובץ exe) באמצעות ה-MATLAB Compiler, לצורך העברתו למחשב בו אין רישיון MATLAB פעיל, או לארוז את ה-GUI בתור App לצורך העברתו למחשב בו מותקן MATLAB (לחצו לסרטון).

ברור גם שניתן לייצר ממשקים מורכבים יותר (עשינו שימוש רק בשניים מבין הלחצנים שב-GUIDE). למעוניינים – מומלץ לבדוק את הקישור הבא, המכיל 41 דוגמאות ליכולות שימושיות של ממשקי המשתמש הגרפיים בסביבת MATLAB (לחצו פה), וכן את ממשק ה-App Designer שהתווסף ל-MATLAB בגרסת R2016a (לחצו למידע).

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

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


יום שני, 23 ביולי 2012

A Guide to GUIDE | פיתוח ממשקים גרפיים ידידותיים למשתמש בעזרת MATLAB

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

את ה-GUI המיוחד המשמש לפיתוח GUIs מעלים באמצעות פקודת guide ובחירה באופציה של Blank GUI (ברירת המחדל). לצורך הדוגמה, אפתח בעזרת ה-GUI המיוחד GUI בו יוצגו 10 מספרים אקראיים (מפולגים אחיד בין 0 ל-1) באמצעות גרף, בכל פעם בה המשתמש ילחץ על לחצן ייעודי. על מנת להגדיר את השטח בו יוצג הגרף, יש לבחור בלחצן ה-Axes ב-GUI המיוחד, ולצייר מרובע על משטח העבודה. על מנת למקם לחצן ייעודי אשר לחיצה עליו תביא להצגת הגרף בשטח שהוגדר, יש להכניס למשטח העבודה לחצן שכזה (על ידי בחירה בלחצן Push Button וציור מלבן על משטח העבודה).

ניתן לשנות בקלות את גודל ה-GUI, צבע הרקע או הכיתוב על הלחצן. למשל, לצורך ביצוע המשימה האחרונה, יש להקליק על הלחצן פעמיים עם העכבר, ולשנות את השדה String (אני שיניתי ל-Push here to display plot). התוצאה בינתיים נראית כך:


כעת, כל שנותר הוא ללחוץ על לחצן ה-play הירוק (מופיע בצד ימין בשורה העליונה), לאשר את ההודעה הקופצת אל המסך (אחרי קריאתה...) ולתת שם ל-m file שיווצר ויכיל את הפקודות אשר בעבר הייתם חייבים לכתוב ידנית לצורך קבלת GUI דומה.

כפי שתשימו לב, ה-GUI שקיבלתם בהחלט נראה כמצופה, אבל לא ממש מתפקד. על מנת שלחיצה על לחצן ה- Push here to display plot תביא להצגת הגרף, יש להגדיר ללחצן זה מה אמור להתבצע כאשר לוחצים עליו. חיזרו ל-GUI המיוחד, הקליקו עם המקש הימני של העכבר על הלחצן, וביחרו ב-View Callbacks ואז ב-Callback. תוצאת פעולה זו היא מיקום של הסמן בקוד ה-MATLAB שנוצר לא מזמן, בדיוק בשורה שמתחתיה יש לכתוב את הקוד שצריך להתבצע בעת לחיצה על הלחצן. במקרה שלנו:
plot(rand(10,1));

כעת, אם תריצו את קוד ה-MATLAB (באמצעות F5), תקבלו שוב את ה-GUI, אך הפעם הוא גם יתפקד כהלכה:


זו היתה דוגמה בסיסית לקלות בה ניתן היום לפתח GUIs בסביבת MATLAB. דוגמאות שימושיות נוספות ניתן למצוא בקישור הזה. לסיום, אציין כי באפשרותכם לקמפל את ה-GUI שפיתחתם ולהעביר אותו למחשבים אשר אין בהם התקנה של MATLAB (וזאת באמצעות כלי שנקרא MATLAB Compiler).

האם אתם מפתחים GUIs באמצעות GUIDE או באמצעות פקודות? האם יש GUI משוכלל שפיתחתם ותרצו להשוויץ בו?