‏הצגת רשומות עם תוויות M-Lint Code Analyzer. הצג את כל הרשומות
‏הצגת רשומות עם תוויות M-Lint Code Analyzer. הצג את כל הרשומות

יום ראשון, 24 במרץ 2013

אסטרטגיות להאצת ישומי ואלגוריתמי MATLAB

ממש לאחרונה התפרסמה באתר MathWorks סקירה בסיסית של האסטרטגיות השונות להאצת ישומי ואלגוריתמי MATLAB. בין היתר, נידונות בסקירה אסטרטגיות כמו אלוקציה מראש של זיכרון, שימוש במספר מעבדים או בכרטיס המסך (GPU), שיטות לכתיבת אלגוריתמים טובים יותר, היתרונות בעבודה עם System Objects ויצירה אוטומטית של קבצי MEX.

לקריאת הסקירה, לחצו כאן.

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

יום שבת, 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, 
איך הייתם מעירים למשתמש שהוא שכח סוגריים?