יום שלישי, 31 בדצמבר 2013

ניקיון בררני


קרה לכם פעם שרציתם למחוק משתנים רבים מה-workspace, אך לא את כל אלה
שבו ? למשל, נניח שב-
workspace שלנו יש משתנים ששמותיהם הינם שמות האותיות ב-ABC, ואנו מעוניינים לשמור רק את משתנה R.

אחת הדרכים לעשות זאת היא באמצעות פקודת clear, תוך ציון שמות כל המשתנים שאתם מעוניינים למחוק:  clear A B C D…Q S T…Z

דרך אחרת הינה לסמן את כל המשתנים המיותרים ב-workspace, ללחוץ על הלחצן הימני של העכבר, ולבחור ב-delete.

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

במקרה שתואר לעיל, השימוש בפונקציה על מנת להסיר את כל המשתנים למעט R ייעשה באופן הבא:

clearvars –except R

ואגב, אם ה-workspace שלכם נראה כמו זה:


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

clearvars -except A*

למידע נוסף על clearvars, כולל סינטקסים נוספים לשימוש בפונקציה – לחצו כאן.

 

יום רביעי, 27 בנובמבר 2013

נתח לוגי

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


-          שלום, אני יגאל, וגם אני הייתי סטודנט להנדסת חשמל
-          כולם ביחד: אנחנו אוהבים אותך יגאל
-          ובאותם הימים עבדתי במשרת סטודנט באחת מחברות ההזנק הישראליות שלימים נמכרה לחברת ענק בינלאומית
-          כולם ביחד: אנחנו גאים בך, יגאל
-          התפקיד שלי היה לבנות סביבת אימות לקוד לוגי שנכתב ע"י המפתחים, להריץ אותו ע"ג שרתי הסימולציה ולנתח את התוצאות שלו
-          כמה מהאנשים בקהל מהנהנים בראשם בהבנה
-          הו, כמה שעות נפלאות העברתי בניתוח צורות גלים (waveforms) וניסיונות להבין מדוע נכשלה הסימולציה
-          מהנדס בחולצת פסים בגוונים של כחול בשורה שלישית: תגיד להם איש, תגיד להם!
-          למעשה, גם היום קשה לדמיין דרך יותר נוחה לנתח התנהגות מערכות לוגיות ומכונות מצבים מאשר צורת גל לוגית או נתח לוגי (Logic Analyzer). אלא ששום דבר לא נמשך לנצח, וברגע שעברתי מתחום הפיתוח הלוגי לתחום האלגוריתמיקה והנדסת מערכת נשארתי ללא כלי waveform שכל כך אהבתי, שכן במשפחת MATLAB & Simulink לא היו את הכלים האלה...
-          מהנדסת בג'קט אפור, היושבת בשורה הראשונה, מזילה דמעה שקטה של הזדהות ומנגבת אותה בנייר טישו
-          וכך, למרות כל הקושי, נשארתי waveform clean במשך כמה שנים טובות
-          קול מאחת השורות האחוריות: תהיה חזק, אתה לא לבד במלחמה היום יומית הזאת!
-          אז ככה, יש לי משהו חשוב לספר לכם! לא רבים יודעים, אבל החל מגרסת R2013a של כלי MathWorks הצטרף ל DSP System Toolbox כלי חדש, ה Logic Analyzer!
-          מחיאות כפיים, שריקות של עידוד, קולות YEAH מוקלטים ברקע... FADE TO BLACK... כתוביות... מנגינה... 

כפי שהבנתם, נושא הפוסט הוא כלי מדידה יחסית חדש - ה dsp.LogicAnalyzer, שנכלל ב DSP System Toolbox. הכלי מאפשר לבצע ניתוח שינוי ערך האות (signal transition) בתחום הזמן כאשר מספר הערוצים לניתוח מוגבל רק ע"י יכולת המחשב שלכם. מתוקף היותו של Logic Analyzer ממומש כ System Object, יש לו הן את היכולת לנתח את כל האותות המוכנסים אליו כחתיכה (frame) אחת לכל ערוץ, והן את היכולת לתח את האותות בצורת דגימות זורמות (streaming signal processing). וכפי שהתרגלתם בעבודתכם בסביבת MATLAB, גם ה Logic Analyzer תומך במגוון שורשי יסוד (Radixes), פורמטים וצורות תצוגה. מגניב? בטח מגניב! אז בוא נראה דוגמא...
הנה תרשים בלוקים (הניתן להגדלה ע"י לחיצה) ובו Digital Up-Converter:

בקודMATLAB , התהליך נראה כך:


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


נקרא כעת לאובייקט ה
Logic Analyzer :

שימו לב לכך שהגדרות שמות הערוצים, ה
Radix לכל ערוץ, קצב הדגימה של התצוגה והמפריד (Divider) - הם רק חלק מהאפשרויות העומדות לרשות המשתמש באובייקט לטובת שיפור צורת התצוגה והפיכת לברורה יותר. תוצאת הפעלת האובייקט הזה היא:

מה שקבלנו כאן הוא למעשה "תחליף זמין" לכלי
Waveform Display הנכללים בדרך כלל בכלי סימולצית קוד חומרה כמו Mentor Graphics ModelSim ומתחריו. הכלי מאפשר לנו לנתח התנהגות דינמית של אותות המערכת ברמת מעבר בודד, מה שהופך את הכלי למושלם לעבודות דיבוג של בעיות בעלות אופי דינאמי. הכלי יקל עלינו לוודא שאותות
סימון (
Signaling) או בקרה (Control) מופעלים בתזמון נכון, ובעיות כמו אובדן חלק מהמידע כתוצאה מאותות בקרה שמופעלים בתזמון לא נכון - לא יתרחשו.
מפני שהכלי ממומש כ System Object, השימוש בו אפשרי לא רק בסביבת MATLAB אלא גם בסביבת Simulink, רק חשוב לציין ששימוש בסביבה האחרונה ידרוש מהמשתמש גם פעולה של  Logging לאותם אותות שהוא יהיה מעוניין לנתח.

לקריאה נוספת:
- תיעוד מתוך אתר MathWorks (לחצו כאן)
- פוסט באנגלית בנושא (לחצו כאן)

יום שני, 28 באוקטובר 2013

מפתחים מערכות LTE ? יש לנו הפתעה בשבילכם !


חברת MathWorks שיחררה באמצע אוקטובר כלי חדש במשפחת ה-System Toolboxes – את ה-LTE System Toolbox. הכלי מאפשר יכולות חדשות שנדרשו על ידי לקוחות העוסקים בפיתוח ה-Physical Layer של מערכות תקשורת אלחוטיות הפועלות בתקני LTE ו-LTE-Advanced.

לצורך פעולתו, הכלי מחייב רישיון ל-Communications System Toolbox (וכלי זה מחייב את ה-DSP System Toolbox, שדורש את ה-Signal Processing Toolbox היושב על MATLAB).

למידע נוסף, היכנסו לעמוד המוצר באתר MathWorks

לגרסת התנסות – אנא פנו באמצעות matlab.israel@gmail.com

 

יום שני, 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.
מה דעתכם על הגרסה החדשה? מאיזה פיצ'ר התלהבתם במיוחד? האם יש חידוש משמעותי עבורכם שלא צויין למעלה?