יום שני, 14 ביוני 2010

ה-System Objects כבר כאן !

בגרסת R2010a, שיצאה בתחילת חודש מרץ, נוספו לסביבת MATLAB כלים ואלגוריתמים המאפשרים עיבוד רצף (Stream Processing), מידול מורחב ב-fixed-point והמרה אוטומטית של קוד MATLAB לקוד C גם עבור אפליקציות מתחום עיבוד האות והתמונה. בעזרת אובייקטי המערכת (System Objects) הללו, לא צריך, למשל, לטעון את כל סרטון הוידאו רק בשביל לבצע edge detection על הפריים הראשון שלו, ולא צריך להמתין לטעינת כל סיגנל השמע רק על מנת לבצע FFT ל-256 הדגימות הראשונות.
הכתבה הבאה סוקרת את החידוש הנ"ל: לחץ לקבלת הכתבה. 
ואגב – בגרסת R2010b צפויים להצטרף עוד 95 אובייקטי מערכת אשר אמורים להקל על פיתוח מערכות תקשורת. אבל אל תגלו לאף אחד מאיפה אתם יודעים את זה...

האם אובייקטי המערכת עשויים להיות שימושיים עבורכם? לאילו עוד Blockset-ים של Simulink הייתם רוצים גישה ישירה מתוך MATLAB?

יום ראשון, 2 במאי 2010

עולם הפרסום


אני זוכר שבתור סטודנט לתואר ראשון הייתי מסתבך לא מעט כשהייתי מנסה לשמור Figure של MATLAB בתוך מסמך Word שבו נדרשתי לרכז את תשובותיי לתרגיל בית בקורס זה או אחר. קורס אחרי קורס, תרגיל בית אחרי תרגיל בית, שאלה אחרי שאלה, גרף אחרי גרף, הייתי ניגש לחלון ה-Figure, בוחר בתפריט File ובו באופציה Export Setup. וכל זאת, רק בשביל ללחוץ על לחצן Export בחלון שנפתח. ואז, הייתי צריך לבחור שם שבו הייתי רוצה שהגרף יישמר, לזכור לשמור אותו בצורה של תמונת JPEG או כקובץ bmp, ולשנות את מיקום ברירת המחדל בו הקובץ יישמר. לאחר מכן, הייתי צריך לבחור בתפריט Insert במסמך ה-Word, ובו ב-Picture, וב-From File. וכדי לשמור על הסדר הטוב, כמובן שגם הייתי טורח למחוק את קובץ התמונה אחרי הכנסתה למסמך ה-Word...
 


נזכרתי בתלאות שתוארו למעלה בעקבות הפוסט של Doug Hull מחברת The MathWorks מתאריך 21.4.2010. בבלוג שלו, Doug מתאר את הדרך שגיליתי רק אחרי סיום התואר הראשון, והיא להשתמש בפקודת
Print-dmeta;
אחרי ציור הגרף.
אחרי השימוש בפקודה הזו ניתן לעבור למסמך ה-Word, ופשוט ללחוץ על המקשים Ctrl+v. זה הכל ! Doug, אגב, גם מציע לעשות מההפקודה הזו Shortcut.

ואפרופו הפצה של נתונים מ-MATLAB לתוכנות אחרות, אני מזמין אתכם להשתמש בלחצן ה-Save and Publish שמופיע כחלק מה-Editor של MATLAB, וכן בלחצן ה-Select and publish configuration שמימינו. שני הלחצנים מוקפים בעיגול בתמונה הבאה, ואני חייב להודות שהם ממש משדרגים את המראה של פתרונות תרגילי הבית שאני מגיש במסגרת התואר השני, ובמיוחד כאשר אני עושה שימוש ב-Cell mode.


מי שלא מכיר את הלחצנים, מוזמן למצוא עליהם מידע כאן. ומי שמכיר, ודאי ישמח לגלות שכבר החל מהגרסה הקודמת של MATLAB (שיצאה בספטמבר 2009) ניתן להפיץ קוד MATLAB ישירות לתוך קבצי PDF. הלינק האחרון, אגב, הוא מתוך הבלוג של Michael Katz (גם הוא מ-The MathWorks).

ונקודה אחרונה – אם ברצונכם לייצר בצורה אוטומטית דו"חות מותאמים אישית מתוך קוד ה-MATLAB שלכם, אתם מוזמנים לבדוק את ה-MATLAB Report Generator. אגב, אם אתם עובדים עם Simulink, כדאי לכם לבדוק גם את ה-Simulink Report Generator. ואם לא, אז לא...

אילו עוד בלוגים בנושא MATLAB ו-Simulink אתם קוראים ? איך אתם מעבירים גרפים מ-MATLAB לתוכנות אחרות? האם אתם יודעים מה עומד מאחורי ראשי התיבות JPEG ו-PDF? האם עד הפוסט הזה הזדמן לכם לעבוד עם הפיצ'רים והכלים השונים שהוצגו בו? ואם הכרתם את ה-Simulink Report Generator, האם גם ידעתם שהוא מאפשר לכם להשוות בקלות בין שתי גרסאות שונות של מודל Simulink?

יום שני, 5 באפריל 2010

מה חדש ב-MATLAB ? (חלק 3)

Push the button

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


כשאני עומד לספר ללקוחות על האופציה להוסיף לחצן לסביבת MATLAB, אני בדרך כלל מתחיל בשאלה "האם אתם יודעים כיצד ניתן לבצע clear all, close all ו-clc בלחיצה אחת?". אנשים בדרך כלל לא יודעים כיצד לעשות זאת, למרות שכבר הייתי עד מספר פעמים לתשובה המקורית "פשוט לוחצים על ה-X הקטן בצד ימין למעלה". במקרה שאני מקבל את התשובה הזו, אגב, אני משנה את השאלה ל"איך ניתן לבצע את שלוש הפעולות בלחיצה אחת ולהמשיך לעבוד בסביבת MATLAB"... והתשובה – שימוש ב-Shortcuts.


Shortcuts, או קיצורי דרך, אינם דבר חדש ב-MATLAB,
ועדיין – רבים לא מודעים ליכולת שלהם להריץ בלחיצת עכבר אוסף של פקודות או סקריפטים שהם מקישים מידי יום או מידי שעה. בין אם זה clear all + close all + clc, פתיחת מספר M-Files, מעבר ממחיצה אחת למחיצה אחרת או גישה מהירה מתוך ה-MATLAB לאתר האינטרנט של קבוצת הכדורגל האהודה – Shortcuts הם הפתרון.


אז איך יוצרים Shortcut?
כדי להוסיף קיצור דרך, יש ללחוץ על המקש הימני של העכבר כשהסמן מעל ה-Shortcuts Bar, השורה השנייה מתחת לשורת התפריטים.



ואז, יש לבחור ב-New Shortcut. בחלון שייפתח אפשר לתת שם לקיצור הדרך, לבחור תמונה שתוצג לצד השם הזה בשורת ה-Shortcuts, וכמובן – לכתוב קוד MATLAB או שם של M-File שהייתם רוצים שיתבצע כשתלחצו על הלחצן. בדוגמה למטה, למשל, יתבצעו שלוש פקודות הניקוי שהוזכרו קודם, יחד עם פקודה הסוגרת מודלים פתוחים של Simulink.




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


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

האם שמתם לב ל-Start של MATLAB לפני הפוסט הזה? אילו Shortcuts מעניינים יש לכם? האם הכרתם את פקודת web? ומה לגבי bdclose all? ואיזו קבוצה אתם אוהדים?

יום שבת, 6 במרץ 2010

מה חדש ב-MATLAB ? (חלק 2)

 תאים, רבותי, תאים
השבוע שוחחתי עם לקוח, לא אפרט מאיזו חברה, שהתעניין ביכולת לעבור בצורה אוטומטית מקוד MATLAB לקוד C. מפה לשם מצאתי את עצמי מספר לו על העזרה שמספק ה-
M-Lint Code Analyzer בכל הקשור ליצירת קוד C מתוך MATLAB, כשלפתע התברר לי שאותו מהנדס בכלל לא מכיר את הפונקציונליות הבסיסית של הכלי. כמובן שהסברתי לו עליה בקצרה ואף הפניתי אותו לפוסט הקודם בבלוג הזה, ולאחר מכן התחלתי לעבור איתו על דוגמה שעושה שימוש ב-Cell Mode. אז, התברר לי שגם את ה-Feature הזה הוא לא מכיר, רק שהפעם לא היה לאן להפנות אותו להשלמת הידע החסר, והתיישבתי לכתוב את הפוסט הנוכחי.

כמו ה-M-Lint Code Analyzer, גם Cell Mode הוא כלי די ותיק. ייתכן ששמתם לב אליו, אבל לא השתמשתם בו. ואם לא שמתם לב אליו, כנראה שהוא פשוט מנוטרל אצלכם (ניתן לתקן זאת על ידי פתיחת M-File, ובחירה בתפריט Cell, ובו – Enable Cell Mode). ה-Feature הזה מאפשר לכם לחלק את ה-M-File שלכם למקטעים, אשר לא חייבים לרוץ כולם יחד. ניתן, למשל, לשנות מקטע מסויים ולהריץ אותו מספר פעמים, ורק אחרי שאתם מרוצים מביצועיו – לעבור הלאה, ל-Cell הבא.

יצירת מקטע מבוצעת על ידי הסימן %%, ואם תכתבו גם טקסט לצידו, הוא יהפוך לכותרת המקטע (דבר שימושי במיוחד אם אתם נעזרים ביכולת ליצור מסמך Word, PowerPoint, PDF או HTML מתוך ה-m-file שלכם). הרצת תא מתבצעת על ידי בחירה בלחצן השמאלי התחתון בשורת הלחצנים שב-Editor (Evaluate Cell, אפשר גם ללחוץ על מקשי Ctrl ו-Enter יחד). הרצת תא ומעבר לתא הבא מתאפשרת על ידי בחירה בלחצן מימין ללחצן הקודם (או Ctrl+Shift+Enter).
 




שני האלמנטים הבאים מאפשרים לשנות מספר בתא (שהסמן ממוקם לידו או מסמן אותו) על ידי הפחתת/הוספת מספר ממנו (במקרה שבאיור למעלה, המספר 1.0) או הכפלה/חלוקה בפקטור מסויים (במקרה הנ"ל, הפקטור 1.1). כל שינוי של המספר ילווה גם בהרצה מחודשת של התא, והדבר שימושי כאשר מעוניינים לבחון פרמטר כלשהו (למשל, סף מסויים או מספר המקדמים של מסנן).

את יתר הלחצנים אני בטוח שתצליחו לפענח לבדכם (ובקשר ללחצן השני מימין, נסו אותו אחרי שתיתנו שמות לתאים שיצרתם). שימו לב, אגב, שבגרסת R2010a, שמתוכננת לצאת ב-5/3/2010, מסתמן שאמורים להתווסף שני לחצנים חדשים, המאפשרים לעבור לתא הבא או לתא הקודם מבלי להריץ את התא הנוכחי (הלחצנים מופיעים בצד שמאל באיור למטה, ואגב, הפונקציונליות שלהם כבר קיימת – חץ למטה + Ctrl או חץ למעלה + Ctrl).
 

ייתכן שלא תראו את הלחצנים החדשים מבלי לבצע קסטומיזציה של האייקונים שמופיעים בסרגל הכלים התחתון. תוכלו לעשות זאת על ידי בחירה ב-File-Preference-Toolbars-Editor-Cell Mode.  שם גם תוכלו להשפיע על המראה של סרגלי כלים נוספים בסביבת העבודה.
למה אתם משתמשים ב-Cell Mode? אילו לחצנים הייתם מוסיפים לו? האם יש לחצנים אחרים שחסרים לכם ב-MATLAB? מה עומד מאחורי ראשי התיבות PDF
ו-HTML? האם השתמשתם בקדם-גרסה (Prerelease) של R2010a? ומדוע לא עניתם על אף שאלה מתוך אלה ששאלתי בסוף הפוסט הקודם?

יום רביעי, 17 בפברואר 2010

מה חדש ב- MATLAB ?

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

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

הגרסה האחרונה, R2009b, יצאה בתחילת חודש ספטמבר 2009, והיא מכילה
עדכונים ל-85 מכלי The MathWorks, וביניהם – MATLAB 7.9 ו – Simulink 7.4. המשתמשים מצאו 420 באגים בגרסאות הקודמות והם תוקנו בגרסה החדשה (תודו שהיה לכם כיף למצוא אותם...),  ו-580 פיצ'רים חדשים התווספו. בפוסטים הקרובים נדון בכמה מהחידושים בגרסה האחרונה של כלי The MathWorks, אבל עוד קודם לכן – נעסוק במספר "חידושים ותיקים" שאני בטוח שרבים מכם בכלל אינם מודעים אליהם. אלה מכם שכבר עובדים עם הכלים שנסקור את החידושים בהם מאוד יהנו מהקריאה, אבל גם מי שעדיין לא עובד עם כלים מסוימים יוכל ללמוד על היכולות שלהם.

אחד ממרכיבי המפתח של MATLAB, שמניסיוני לא רבים מודעים אליו, הוא ה- M-Lint Code Analyzer.  הכלי הזה, אשר מגיע כחלק מ-MATLAB, בודק את הקוד שהמשתמשים כותבים ב-editor ומחפש בעיות או מציע שינויים שאמורים לשפר את ביצועי האלגוריתם. אם הקוד שלכם "מושלם", תראו בפינה הימנית העליונה של ה-editor ריבוע ירוק. במקרה שיש לכלי הצעות לייעול האלגוריתם או להפיכתו לקוד שירוץ ללא הודעות שגיאה, תראו באותו מקום ריבוע כתום או אדום, בהתאמה.

הנה דוגמה לקוד בעייתי (ראו את הריבוע האדום בפינה הימנית העליונה של ה-editor):

בדוגמה הנ"ל, ה- M-Lint Code Analyzer מתריע על אי סיומה של שורה מספר 2 עם התו ";" (גורם לאי יעילות), על אי סגירת סוגריים בשורה 3 (דבר שימנע מהקוד לרוץ ללא הודעת שגיאה) ועל משתנה שמימדיו משתנים בתוך לולאה (גורם לאי יעילות).

מגרסה לגרסה מורחב מאגר הבעיות שהכלי הזה מסוגל לאתר, וההודעות שהכלי מציג הופכות ליותר ויותר ברורות, דבר שאמור להקל על המשתמשים כשהם מנסים להחליט אם לקבל את העצה שלו או לא. שימו לב שלעצלנים שבינינו יש אפשרות ללחוץ על כפתור ה-Fix המופיע בהודעה המלווה את שורה 2, ובך לחסוך חיפוש אחר התו ";" במקלדת. נקודה נחמדה נוספת היא העובדה שה-M-Lint Code Analyzer הוא כלי מאוד מנומס, ולראיה – קראו שוב את ההערה המלווה את שורה 3. הכלי לא מאשים אתכם ששכחתם סוגריים, הוא פשוט רומז בעדינות שקיים חוסר איזון בין תווי פתיחת הסוגריים ותווי הסגירה.

האם הכרתם את ה-M-Lint Code Analyzer לפני הפוסט הנוכחי? האם ידעתם של-The MathWorks יש מעל 80 מוצרים? יש חידוש מסויים שהייתם רוצים שארחיב עליו יותר בפוסט הבא? אם הייתם המפתחים של הגרסה העברית של MATLAB, 
איך הייתם מעירים למשתמש שהוא שכח סוגריים?