סיכום הרצאה - אוניברסיטת בר-אילן

‫קורס תוכנת מטלב ויישומיה‬
‫ד"ר סמדר שץ‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫קורס תוכנת מטלב ויישומיה‬
‫שיעור מס' ‪ :9‬עצמים גרפיים‬
‫עצמים גרפיים ותכונותיהם‬
‫מהו ‪handle graphics‬‬
‫פקודות הגרפיקה במטלב יוצרות עצמים גרפיים‪ .‬קיומם של עצמים גרפיים‪ ,‬תכונותיהם והיחסים ביניהם מקבלים ביטוי‬
‫בתצוגה הגרפית באופן אוטומטי‪ .‬לכן ההשפעה של המשתמש (או המתכנת) במטלב על הגרפיקה נעשית באמצעות יצירה‪,‬‬
‫שינוי ומחיקה של עצמים גרפיים‪ .‬חלק מפקודות הגרפיקה שהזכרנו עד כה יצרו עצמים גרפיים באופן עקיף‪ .‬למשל‪ ,‬הפעלת‬
‫פקודת ‪ plot‬כאשר אין חלון גרפי גורמת ליצירה של חלון גרפי וכן מערכת צירים אחת‪ ,‬שבתוכה יווצר העצם הגרפי של‬
‫העקומה (במקום שהמשתמש יצטרך ליצור ע"י פקודה את החלון הגרפי וליצור ע"י פקודה נוספת את מערכת הצירים)‪.‬‬
‫פקודות גרפיות ברמת המשתמש (‪ )high level‬מבצעות פעולות על עצמים גרפיים שונים באופן השקוף למשתמש‪ .‬למשל‪,‬‬
‫פקודת ‪ plot‬מאתחלת את מערכת הצירים‪ ,‬אלא אם בוצעה לפני כן פקודת ‪ .hold‬לעומת זאת‪ ,‬פקודות גרפיות ישירות ( ‪low‬‬
‫‪ )level‬מבצעות פעולות מוגדרות על עצם גרפי‪ .‬למשל‪ ,‬פקודת ‪ line‬מוסיפה עקומה למערכת צירים (מבלי לאתחל את‬
‫הצירים)‪.‬‬
‫לכל עצם גרפי שנוצר‪ ,‬מוקצה "מזהה" (‪ )handle‬שמאפשר את הגישה לעצם‪ .‬המזהה הוא מספר מסוג ‪ double‬אבל לערך‬
‫ה מספר כשלעצמו אין משמעות‪ .‬אם שומרים את המזהה בתוך משתנה‪ ,‬כאשר עצם גרפי נמחק (אם משום שהחלון או‬
‫מערכת הצירים בו היה נמחקו או אותחלו ואם באמצעת מחיקה יזומה)‪ ,‬המשתנה נשאר בזיכרון אבל אין אפשרות‬
‫להשתמש במספר שנשמר בו‪ .‬כל פקודות השרטוט יכולות להחזיר מזהה‪ ,‬באמצעותו ניתן לטפל בעצם הגרפי בהמשך‬
‫התוכנית‪ .‬לדוגמא‪:‬‬
‫יצירת חלון גרפי חדש‬
‫יצירת מערכת צירים‬
‫‪hfig = figure‬‬
‫= ‪hfig‬‬
‫‪1‬‬
‫‪hax = axes‬‬
‫= ‪hax‬‬
‫‪173.0013‬‬
‫יצירת עקומה‬
‫)'‪hcrv = plot(1:10,rand(1,10),'o‬‬
‫= ‪hcrv‬‬
‫‪174.0022‬‬
‫יצירת טקסט‬
‫)'‪htxt = text(5,0.5,'Middle‬‬
‫= ‪htxt‬‬
‫‪175.0011‬‬
‫)'‪strc = importdata('circle1.gif‬‬
‫)‪himage = image(strc.cdata‬‬
‫= ‪strc‬‬
‫]‪cdata: [600x800 uint8‬‬
‫]‪colormap: [256x3 double‬‬
‫= ‪himage‬‬
‫‪0.0020‬‬
‫יצירת תמונה‬
‫עמ' ‪ 1‬מתוך ‪9‬‬
‫שיעור ‪9‬‬
‫מאי ‪15‬‬
‫קורס תוכנת מטלב ויישומיה‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫קבלת מידע על תכונות עצם גראפי‬
‫)‪strc = get(hndl‬‬
‫קבלת ערכי כל התכונות‪ :‬מתקבל ‪structure‬‬
‫)'‪get(hndl,'PropertyName‬‬
‫קבלת ערך של תכונה מסוימת‪:‬‬
‫)'‪get(hcrv,'MarkerSize‬‬
‫= ‪ans‬‬
‫דוגמאות‪:‬‬
‫‪6‬‬
‫‪1.0000‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0.7500‬‬
‫‪0.7500‬‬
‫‪0‬‬
‫‪0.2500‬‬
‫)'‪get(hax,'ColorOrder‬‬
‫= ‪ans‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0.5000‬‬
‫‪1.0000‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0.7500‬‬
‫‪0.7500‬‬
‫‪0‬‬
‫‪0.7500‬‬
‫‪0.7500‬‬
‫‪0.2500‬‬
‫‪0.2500‬‬
‫)‪inspect(hndl‬‬
‫צפייה אינטראקטיבית בתכונות (עם אפשרות לשינוי)‪:‬‬
‫)‪set(hndl‬‬
‫קבלת רשימה של כל תכונות העצם הניתנות לשינוי‪:‬‬
‫)'‪set(hndl,'property‬‬
‫קבלת רשימת כל האפשרויות הקיימות לתכונה מסוימת‪:‬‬
‫שינוי תכונות עצם גראפי‬
‫)‪set(hndl,'PropertyName',PropertyValue‬‬
‫שינוי תכונה של עצם גרפי‪:‬‬
‫ניתן לשנות מספר תכונות בפקודה אחת‪,‬‬
‫)‪set(hndl,'Pname1',Pvalue1,'Pname1',Pvalue1,...‬‬
‫ע"י זוגות של שם תכונה וערך‪.‬‬
‫דוגמא‪:‬‬
‫)'‪set(hcrv,'Markersize',3,'MarkerFaceColor','m‬‬
‫)'‪set(htxt,'FontSize',16,'backgroundColor','y‬‬
‫‪1‬‬
‫‪0.8‬‬
‫‪0.6‬‬
‫‪Middle‬‬
‫‪0.4‬‬
‫‪0.2‬‬
‫‪10‬‬
‫‪8‬‬
‫‪6‬‬
‫‪4‬‬
‫‪0‬‬
‫‪2‬‬
‫‪0‬‬
‫◄דוגמא ‪ :1‬הסקריפט ‪ d9rw‬מציג באופן דינאמי את המסלול של הולך אקראי במישור עם אורך ‪-‬צעד קבוע‪ .‬מחשבים‬
‫מראש המסלול לכל הצעדים‪ ,‬ומכינים מראש את השטח המוצג ב מערכת הצירים כך שיכלול את כל הנקודות של המסלול‬
‫בכל הזמנים‪ .‬יוצרים שרטוט ראשוני (נקודת המוצא של המסלול ‪ +‬המיקום אחרי צעד אחד) עם כותרת מתאימה למספר‬
‫צעדים זה‪ ,‬ושומרים את המזהים (‪ )handles‬של העקומה ושל הכותרת‪ .‬הצגת העקומה בלולאת הזמנים נעשית לא ע"י‬
‫שרטוט מחדש של העקומה‪ ,‬אלא ע"י שינוי העצם הגרפי של העקומה ועדכונו בערכים המחושבים‪ .‬גם עדכון הכותרת‬
‫עמ' ‪ 2‬מתוך ‪9‬‬
‫שיעור ‪9‬‬
‫מאי ‪15‬‬
‫קורס תוכנת מטלב ויישומיה‬
‫ד"ר סמדר שץ‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫(המציגה את מספר ה צעד) נעשה ע"י הכנת מחרוזת המציגה את הזמן ועדכון המחרוזת בעצם הגרפי של כותרת הגרף‪.‬‬
‫באופן זה‪ ,‬הצגת העקומה והכותרת בזמנים השונים נראית יותר "חלקה" ורציפה מאשר בשיטה של הפעלת פקודות ‪plot‬‬
‫בכל פעם‪.‬‬
‫היררכיה גרפית במטלב‬
‫עצמים גרפיים במטלב מאורגנים באופן היררכי‪ :‬כל עצם שייך לעצם שכולל אותו ("הורה")‪ ,‬כמוראה בתרשים‪:‬‬
‫‪Root‬‬
‫"שורש" הגרפיקה נוצר כאשר מטלב עולה‪ .‬כל החלונות הגרפיים הם "בנים" של‬
‫השורש‪ .‬המזהה (‪ )handle‬של השורש הוא תמיד ‪.0‬‬
‫‪Figure‬‬
‫‪UI Objects‬‬
‫‪Axes‬‬
‫חלון גרפי‪.‬‬
‫עצמים לממשק משתמש (לדוגמא כפתורים‪ ,‬תפריטים)‪.‬‬
‫מערכות‪-‬צירים‪.‬‬
‫‪CoreObjects‬‬
‫עצמים גרפיים בסיסיים‪ :‬עקומות‪ ,‬משטחים‪ ,‬טקסטים‪.‬‬
‫‪Plot Objects‬‬
‫קבוצות של עצמים גרפיים בסיסיים מאותו סוג‪ .‬לדוגמא‪ ,‬סדרת עקומות הנוצרת‬
‫מ‪.contour plot-‬‬
‫‪Groups Objects‬‬
‫עצמים גרפיים מקובצים‪ .‬ניתן לקבץ עצמים כדי לבצע על כולם פעולות דומות‪,‬‬
‫אבל לא כל הפעולות מוגדרות על צבירים מסוג זה‪.‬‬
‫‪Annotation‬‬
‫עצמים ב"שכבת אנוטציה" (שהיא שכבה נפרדת מן הגרפיקה הבסיסית)‪.‬‬
‫‪Objects‬‬
‫בקורס זה לא נתייחס לשלושת הסוגים האחרונים‪.‬‬
‫בדרך כלל‪ ,‬לעצם ברמה נתונה משויכים מספר עצמים ב"רמת ‪-‬הבת"‪ .‬למשל ל"שורש" יכולים להיות מספר "ילדים"‪ :‬כל אחד‬
‫מהם חלון גרפי נפרד‪ .‬בחלון גרפי יכולים להיות מספר מערכות צירים או מספר ‪ .UI Objects‬במערכת ‪-‬צירים יכולים להיות‬
‫מספר עקומות ו‪/‬או טקסטים‪.‬‬
‫אחד מן ה"ילדים" הוא ה"עצם הנוכחי" (‪ ,)current object‬וכל פעולה גרפית מבוצעת עליו (אלא אם צוין במפורש על איזה‬
‫עצם תבוצע הפעולה)‪ .‬למשל אם יש כמה חלונות גרפיים וחלון מס' ‪ 2‬הוא החלון הנוכחי‪ ,‬אז פקודת ‪ clf‬תאתחל את חלון‬
‫מס' ‪ .2‬אם יש כמה מערכות צירים בחלון מסוים ואחת מהן היא ה‪ ,current axes-‬אז פקודת ‪ plot‬תיצור עקומה במערכת‬
‫צירים זו‪.‬‬
‫עמ' ‪ 3‬מתוך ‪9‬‬
‫שיעור ‪9‬‬
‫מאי ‪15‬‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫קורס תוכנת מטלב ויישומיה‬
‫קביעת המיקוד (מיהו ה"עצם הנוכחי")‪ :‬פתיחת חלון חדש באופן אוטומטי מעבירה את המיקוד לחלון זה (‪.)current figure‬‬
‫כנ"ל יצירת מערכת צירים חדשה (בין אם באופן מפורש ובין אם ע"י פקודת שרטוט בחלון חדש) הופכת אותם לצירים‬
‫הנוכחיים (‪ .) current axes‬בחירה ע"י העכבר מעבירה את המיקוד לעצם שנבחר ולכל ה"הורים" שלו‪ .‬כמ‪-‬כן קיימות‬
‫פקודות להעברת מיקוד באופן מפורש‪.‬‬
‫תכונות עם משמעות משותפת‬
‫יש תכונות ספציפיות לסוגי עצמים מסוימים ויש תכונות משותפות לכל העצמים או למרביתם‪.‬‬
‫מינוחים‬
‫משמעות‬
‫מינוח‬
‫אפשרויות‬
‫סוג העצם‬
‫‪type‬‬
‫אחד מסוגי העצמים המוגדרים במטלב‬
‫צבע‬
‫‪color‬‬
‫אחת האותיות המציינות צבע‪ ,‬או שלישיית ‪RGB‬‬
‫יחידות אורך‪ .‬רלוונטי‬
‫‪units‬‬
‫‪inches,centimeters,normalized,points,pixels,characters‬‬
‫לתכונות כמותיות‪.‬‬
‫קו התוחם משטח‬
‫‪edge‬‬
‫תלוי בתכונה המשויכת לקו‪ .‬בדרך כלל‪ ,‬צבע כמתואר למעלה‪.‬‬
‫משטח תחום בקו‬
‫‪face‬‬
‫תלוי בתכונה המשויכת לקו‪ .‬בדרך כלל‪ ,‬צבע כמתואר למעלה‪.‬‬
‫האם העצם נראה‬
‫‪visible‬‬
‫‪on, off‬‬
‫עצמים ‪-‬מתחת בהיררכיה‬
‫‪children‬‬
‫‪Handle‬‬
‫עצם‪-‬מעל בהיררכיה‬
‫‪parent‬‬
‫‪Handle‬‬
‫נוכחי‪ ,‬בפוקוס‬
‫‪current‬‬
‫‪Handle‬‬
‫ברירת ‪-‬מחדל‬
‫‪default‬‬
‫ברירת ‪-‬מחדל לתכונות עצמים שמתחת בהיררכיה‪ .‬תלוי בתכונה‪.‬‬
‫תכונות משותפות לסוגים שונים של עצמים‬
‫‪Type‬‬
‫‪Tag‬‬
‫‪UserData‬‬
‫‪Visible‬‬
‫‪HandleVisibility‬‬
‫‪HitTest‬‬
‫סוג העצם‬
‫מחרוזת‪-‬תווים (איננה משפיעה על התצוגה)‪ .‬שימושי לצורך חיפוש‪.‬‬
‫מידע המשויך לעצם (אינו משפיע על התצוגה)‪ .‬שימושי לצורך תכנות‪.‬‬
‫האם העצם נראה‪.‬‬
‫האם העצם ייכלל בתוצאות חיפוש‪.‬‬
‫האם ניתן לבחור את העצם ע"י העכבר‪.‬‬
‫‪ Color‬עבור ‪ :figure+axes‬צבע‪-‬הרקע‪ .‬עבור ‪ :line‬צבע הקו‪.‬‬
‫‪Clipping‬‬
‫עבור קווים‪ ,‬משטחים‪ ,‬טקסטים וכו'‪ :‬האם ייראו החלקים הנמצאים מחוץ למערכת הצירים‪.‬‬
‫‪FontName‬‬
‫‪ FontAngle‬עבור ‪ :Text‬תכונות הטקסט בעצם‪ .‬עבור ‪ : Axes‬תכונות טקסטים מתחת בהיררכיה‪ ,‬למשל כותרות‬
‫‪FontSize‬‬
‫‪FontUnits‬‬
‫צירים‪ ,‬טקסטים ליד השנתות וכו'‪ .‬גם מקרא (‪ )legend‬נחשב למערכת ‪-‬צירים ולכן תכונות אלה‬
‫משפיעות גם על הפונטים במקרא לעקומות‪.‬‬
‫‪FontWeight‬‬
‫עמ' ‪ 4‬מתוך ‪9‬‬
‫שיעור ‪9‬‬
‫מאי ‪15‬‬
‫ אוניברסיטת בר אילן‬,‫© אגף התקשוב‬
‫ד"ר סמדר שץ‬
‫קורס תוכנת מטלב ויישומיה‬
Marker
.)‫ צבע קו תוחם וצבע מילוי (אם יש‬,‫ גודל‬,‫ סימן‬:‫תכונות מרקרים‬
.‫תיחום בעצמים שהם משטחים‬- ‫ניתן לשייך מרקרים גם לעקומות וגם לקווי‬
MarkerSize
MarkerEdgeColor
MarkerFaceColor
‫ אלה‬.‫ לא נכללות תכונות הקובעו ת התנהגות של ממשקי משתמש‬.‫להלן כמה מן התכונות של העצמים הגרפיים הבסיסיים‬
.‫יתוארו בשיעור על תכנות ממשקי משתמש‬
root :)‫תכונות השורש (מוניטור‬
‫ תהליכים הקשורים‬root ‫ לכן ניתן לשנות דרך תכונות‬.)command window ‫ (כולל‬root ‫כל החלונות במטלב נמצאים תחת‬
.root properties ‫ לקבלת רשימה מלאה יש לחפש בתיעוד‬.‫ ועוד‬Language ,format ,diary ‫ לדוגמא‬,‫לחלון הפקודות‬
Units :‫ יחידות מידה‬.ScreenSize ‫ למשל‬.Screen ‫ מתחילות במילה‬:‫תכונות תצוגה‬
Chilren, CurrentFigure, PointerLocation, PointerWindow
:‫היררכיה‬
Tag, UserData
:‫למתכנת‬
figure ‫תכונות חלון‬
.figure ‫ ע"י פקודת‬:‫יצירת חלון‬
figure(hndl) :‫העברת פוקוס לחלון‬
.figure properties ‫לקבלת רשימה מלאה יש לחפש בתיעוד‬
‫תכונות החלון עצמו‬
Units,Position,Visible,Resize,Color,Name,NumberTitle,WindowStyle
‫בחירה‬
HandleVisibility,HitTest
‫היררכיה‬
Children,CurrentAxes
‫שרטוט בחלון‬
DoubleBuffer,ColorMap,Pointer
‫לממשק משתמש‬
DockControls,UIContextMenu,MenuBar,ToolBar
‫למתכנת‬
Tag,UserData
axes ‫תכונות מערכת צירים‬
.axes ‫ ע"י פקודת‬:‫יצירת מערכת צירים‬
axes(hndl) :‫העברת פוקוס למערכת צירים‬
.axes properties ‫לקבלת רשימה מלאה יש לחפש בתיעוד‬
Units,Position,OuterPosition,Box,Color,FontName, FontAngle, XAxisLocation,
‫הצירים‬
YAxisLocation, XColor, YColor, Zcolor, XLabel, YLabel, Zlabel, TickDir
Children,Parent,CurrentPoint,Visible,HandleVisibility,HitTest
XLim,YLim,ZLim,CLim,CLimMode,DataAspectRatio,XDir,YDir,ZDir
‫היררכיה ונראות‬
‫הצגת מידע‬
XTick, YTick, Ztick, ColorOrder, LineStyleOrder,XGrid, YGrid, ZGrid, GridLineStyle
‫אנוטציה‬
Tag,UserData
‫למתכנת‬
15 ‫מאי‬
9 ‫שיעור‬
9 ‫ מתוך‬5 '‫עמ‬
‫ אוניברסיטת בר אילן‬,‫© אגף התקשוב‬
‫ד"ר סמדר שץ‬
‫קורס תוכנת מטלב ויישומיה‬
‫תכונות קו‬
line(X,Y,'Property1',value1,'Property2',value2) :‫יצירת קו‬
.line properties ‫לקבלת רשימה מלאה יש לחפש בתיעוד‬
‫הקו עצמו‬
XData,YData,ZData
Parent,Visible,HandleVisibility,HitTest,Selected,SelectedHighlight
‫היררכיה וניראות‬
Color,LineStyle,Marker,MarkerSize,Clipping, LineWidth, MarkerEdgeColor,
‫אופן הצגת מידע‬
MarkerFaceColor
DisplayName
‫אנוטציה‬
Tag,UserData
‫למתכנת‬
‫תכונות משטחים‬
‫ למשטחים יש סדרת תכונות המגדירות את המשטח‬. surface properties ‫לקבלת רשימה מלאה יש לחפש בתיעוד‬
.‫ תכונות אלה לא נכללות כאן‬.)‫ ברק ועוד‬,‫ טקסטורה‬,‫(שקיפות‬
‫המשטח עצמו‬
XData,YData,ZData,CData
Parent,Visible,HandleVisibility,HitTest,Selected,SelectedHighlight
‫היררכיה וניראות‬
FaceColor,EdgeColor,LineStyle,Marker,MarkerSize,Clipping, LineWidth,
‫אופן הצגת מידע‬
MarkerEdgeColor, MarkerFaceColor
DisplayName
‫אנוטציה‬
Tag,UserData
‫למתכנת‬
‫תכונות טקסט‬
.text properties ‫לקבלת רשימה מלאה יש לחפש בתיעוד‬
‫הטקסט עצמו‬
Position,String
Parent,Visible,HandleVisibility,HitTest,Selected,SelectedHighlight
FontUnits,FontSize,FontName,FontWeight,FontAngle,Rotation, Interpreter,
‫היררכיה וניראות‬
‫אופן הצגה‬
HorizontalAlignment, VerticalAlignment, Units, Clipping, Margin, Extent
‫עיצוב‬
Color,BackgroundColor,LineStyle,LineWidth,
‫למתכנת‬
Tag,UserData
‫ שימוש בתכונות‬:‫דוגמא‬
Births per year and month
13000
normalized
12000 1.1
Max
1
Min
2
4
6
8
month
10
12
y
9000
nc
10000 0.9
te
n
de
Raw data
11000
8000
7000
6000
1970
15 ‫מאי‬
1975
1980
1985
1990
year
1995
2000
2005
‫ מציג נתוני לידות לפי שנים וחודשים‬d9inset ‫ הסקריפט‬:2 ‫◄דוגמא‬
,‫ במערכת הצירים הראשית מוצג המידע הגולמי‬.)d4births-‫(בדומה ל‬
‫) מוצגים הנתונים לאחר נרמול‬inset( ‫ואילו במערכת צירים קטנה יותר‬
‫כן מוצגים טקסטים (אחד בצירים‬-‫ כמו‬.)‫(נטרול מגמה כללית לפי שנים‬
‫ קובעות את‬inset-‫ תכונות הטקסטים ב‬.)inset-‫הראשיים ושניים ב‬
‫מיקום האותיות יחסית לקואורדינטות של נקודת העיגון באופן שונה‬
‫ גודל‬.)‫מברירת המחדל (שהיא שמאל בציר האופקי ומרכז בציר האנכי‬
‫ כל‬.‫) מהצירים הראשיים‬Fraction ‫ מחושב כחלק יחסי (משתנה‬inset-‫ה‬
.‫ כדי להקל על זיהוי בהמשך‬Tag-‫מערכת צירים מסומנת ב‬
9 ‫שיעור‬
9 ‫ מתוך‬6 '‫עמ‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫קורס תוכנת מטלב ויישומיה‬
‫טיפול בעצמים גרפיים‬
‫מציאת העצם בפוקוס‬
‫הפקודות הבאות מחזירות מזהה ‪ handle‬לעצם גרפי שהוא‪:‬‬
‫‪gcf‬‬
‫‪Current figure‬‬
‫‪gca‬‬
‫‪Current axes‬‬
‫‪gco‬‬
‫‪Current objet‬‬
‫;)'‪strc = importdata('circle1.gif‬‬
‫)‪himage = image(strc.cdata‬‬
‫)‪set(gcf,'colormap',strc.colormap‬‬
‫דוגמא‪:‬‬
‫‪100‬‬
‫= ‪himage‬‬
‫‪0.0015‬‬
‫‪200‬‬
‫‪300‬‬
‫‪400‬‬
‫‪500‬‬
‫‪800‬‬
‫‪700‬‬
‫‪600‬‬
‫‪500‬‬
‫‪400‬‬
‫‪300‬‬
‫‪200‬‬
‫‪100‬‬
‫‪600‬‬
‫חיפוש לפי תכונות‬
‫)‪hndl=findobj(PropertyName,PropertyValue‬‬
‫מציאת עצם‪/‬ים שלתכונה מסוימת יש ערך מסוים‪.‬‬
‫)‪hndl=findobj(P1,V1,P2,V2,P3,V3,P4,V4‬‬
‫ניתן לחפש לפי מספר תכונות‪ .‬מתקבלים העצמים שמקיימים‬
‫את כל התנאים‪.‬‬
‫ניתן להגביל את החיפוש לעצמים מסוימים (כולל ה"ילדים"‬
‫)‪hndl=findobj(Parents,PropName,PropValue‬‬
‫שלהם)‪.‬‬
‫)'‪htext=findobj(gca,'type','text‬‬
‫דוגמא‪ :‬מציאת כל הטקסטים השייכים למערכת הצירים‬
‫הנוכחית‪.‬‬
‫◄דוגמא ‪ :3‬הפונקציה ‪" d9curve_num‬מחלצת" את הנתונים הנומריים המוצגים בחלון גרפי מסוים‪ .‬ראשית מוצגים‬
‫הצירים שבחלון והמשתמש בוחר מאיזו מערכת צירים יילקחו הנתונים‪ ,‬בהנחה שלכל מערכת צירים הוצמד ‪ Tag‬אשר יקל‬
‫על זי הוי שלה‪ .‬לאחר מכן מחפשים "בנים" למערכת צירים זו שהם מסוג עקומה (כדי לא לכלול גם טקסטים)‪ .‬מכל אחד מן‬
‫העצמים שנמצאו מקבלים את ערכי ‪ x,y‬ואוספים את הנתונים במשתנה אחד מסוג ‪ .Cell Array‬כדוגמא להפעלת‬
‫הפונקציה‪ ,‬נקח את קובץ השרטוט שנוצר בדוגמא מס' ‪xydata = d9curve_num('births.fig') .2‬‬
‫מחיקת עצמים‬
‫)‪delete(hndl‬‬
‫מחיקת עצם גרפי אשר המזהה שלו ‪.hndl‬‬
‫אם ‪ hndl‬מערך של מזהים‪ ,‬יימחקו העצמים שאלה המזהים שלהם‪.‬‬
‫))'‪delete(findobj(gca,'type','text‬‬
‫דוגמא‪ :‬מחיקת כל הטקסטים במערכת הצירים הנוכחית‪.‬‬
‫עמ' ‪ 7‬מתוך ‪9‬‬
‫שיעור ‪9‬‬
‫מאי ‪15‬‬
‫קורס תוכנת מטלב ויישומיה‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫קביעת ערכי ברירת‪-‬מחדל‬
‫ערכי ברירת המחדל של עצם כלשהו הם תכונה של העצם שהם שייכים אליו בהיררכיה הגרפית‪ .‬למשל‪ ,‬ברירת המחדל‬
‫לצבע של כל מערכת צירים חדשה שנוצרת בחלון גרפי היא תכונה של החלון‪.‬‬
‫)‪set(Hparent,'DefaultObjTypePropName',value‬‬
‫מבנה הפקודה‪:‬‬
‫מזהה של ‪parent object‬‬
‫סוג העצם עבורו מגדירים ברירת מחדל‪.‬‬
‫שם התכונות עבורה מגדירים ברירת מחדל‬
‫ערך ברירת המחדל‬
‫למשל‪ ,‬כדי להגדיר גופני ברירת‪-‬מחדל לצירים‪:‬‬
‫‪Hparent‬‬
‫‪ObjType‬‬
‫‪PropName‬‬
‫‪value‬‬
‫)'‪set(gcf,'DefaultAxesFontName','Times‬‬
‫פקודות ממשק נוספות‬
‫קלט גרפי‬
‫הפקודות הבאות עוצרות את ביצוע התוכנית ומחכות לקלט מן המשתמש (בדומה ל‪ input-‬ו‪ .)menu-‬לאחר סיום התהליך‪,‬‬
‫הקלט עובר לסביבה הקוראת והתוכנית ממשיכה להתבצע‪.‬‬
‫קלט קואורדינטות ע"י הקשת עכבר‬
‫קלט של קואורדינטות של נקודות לפי הקשת עכבר על חלון עם נתונים מספריים‪ .‬אם בזמן הפעלת הפקודה לא קיים חלון‬
‫גרפי‪ ,‬אז ייפתח חלון‪ .‬אם לא קיימת מערכת‪-‬צירים‪ ,‬אז תיווצר מערכת‪-‬צירים עם ברירת‪-‬מחדל עבור האזור הנראה בה‪.‬‬
‫הקואורדינטות נתונות ביחידות של הנתונים המספריים‪ .‬ביצוע התוכנית מושהה עד לסיום הקלט‪ .‬יש שתי אפשרויות לסיום‪:‬‬
‫)‪[x,y] = ginput(n‬‬
‫קלט של ‪ n‬נקודות‪.‬‬
‫קלט של מספר כלשהו של נקודות‪ .‬הפעולה מסתיימת לאחר הקשה על מקש ‪.ENTER‬‬
‫‪[x,y] = ginput‬‬
‫קלט בתיבת טקסט‬
‫פתיחת חלון ובו מספר תיבות להכנסת טקסט ‪ +‬כפתורי אישור וביטול‪ .‬מעל כל תיבת‪-‬טקסט יש כותרת (‪ .)prompt‬לאחר‬
‫שהמשתמש לוחץ על אחד הכפתורים‪ ,‬החלון נסגר והקלט עובר לסביבה הקוראת כמערך תאים שבו כל תא הוא הטקסט‬
‫שהוזן בכל תיבה (אם נלחץ אישור) או כמערך תאים ריק (אם נלחץ ביטול)‪ ,‬והתוכנית ממשיכה להתבצע‪.‬‬
‫עבור כל תא ב‪ prompt-‬תיווצר תיבה להכנסת‬
‫טקסט‪ .‬דוגמא‪:‬‬
‫)‪inputs = inputdlg(prompts‬‬
‫ציון כותרת לחלון הממשק ‪ +‬מספר השורות לכל קלט‬
‫)}'‪inputdlg({'No. of curves' 'output file‬‬
‫= ‪ans‬‬
‫'‪'10‬‬
‫'‪'example‬‬
‫)‪inputs = inputdlg(prompts,title,Nlines‬‬
‫ציון ערכי ברירת‪-‬מחדל‪ .‬כל ערך חייב להיות מחרוזת‪.‬‬
‫)‪inputs=inputdlg(prompts,title,Nlines,defaults‬‬
‫דוגמא‪:‬‬
‫עמ' ‪ 8‬מתוך ‪9‬‬
‫;}'‪Pstr = {'number of curves' 'full name‬‬
‫;]‪N = [1 ; 2‬‬
‫;}'‪defts = {'1' 'first-name family-name‬‬
‫שיעור ‪9‬‬
‫מאי ‪15‬‬
‫© אגף התקשוב‪ ,‬אוניברסיטת בר אילן‬
‫ד"ר סמדר שץ‬
‫קורס תוכנת מטלב ויישומיה‬
‫אם הקלט הוא יותר משורה אחת‪ ,‬נוצרת‬
‫מטריצה של תווים ברוחב של השורה‬
‫הארוכה ביותר‪.‬‬
‫)‪inputs = inputdlg(Pstr,'',N,defts‬‬
‫= ‪inputs‬‬
‫'‪'3‬‬
‫]‪[2x5 char‬‬
‫}‪inputs{2‬‬
‫= ‪ans‬‬
‫‪Dan‬‬
‫‪Cohen‬‬
‫הצגת תיבת הודעות‬
‫יש במטלב ס דרה של פקודות שמייצרות חלון במטרה להציג מידע‪ .‬פקודות אלה מחזירות מזהה (‪ )handle‬לחלון שנוצר‪,‬‬
‫ולא עוצרות את מהלך התוכנית‪ .‬דוגמא לאחת הפקודות‪:‬‬
‫)‪hndl = msgbox(message‬‬
‫נפתח חלון גרפי עם כפתור ‪ OK‬וכן טקסט כמצויין ב‪.message-‬‬
‫לחיצה על הכפתור תסגור את החלון‪.‬‬
‫)‪hndl = msgbox(message,title‬‬
‫הצגת כותרת לחלון‪:‬‬
‫)‪hndl = msgbox(message,title,icon‬‬
‫הצגת צלמית‪:‬‬
‫'‪'none' 'error' 'help' 'warn' 'custom‬‬
‫כאשר ‪ icon‬יכול להיות אחד מאלה‪:‬‬
‫)'‪h = msgbox('No file was found','message','error‬‬
‫דוגמא‪:‬‬
‫)‪waitfor(h‬‬
‫לעצירת התוכנית עד שהעצם עם מזהה ‪ h‬נמחק‬
‫עצירת התוכנית עד שהעצם ‪ h‬משנה את תכונה ‪property‬‬
‫)‪waitfor(h,property‬‬
‫לעצירת התוכנית עד שהמשתמש לוחץ על כפתור ‪ OK‬בתיבת הודעות‪:‬‬
‫)‪h = msgbox(message‬‬
‫)‪waitfor(h‬‬
‫◄דוגמא ‪ :4‬הפוקנציה ‪ d9curve_select‬מאפשרת למשתמש לבחור מספר עקומות מתוך סדרת עקומות בחלון גרפי‪.‬‬
‫המשתמש מציין מראש כמה עקומות ייבחרו‪ .‬עבור כל עקומה‪ ,‬מוצגת תיבת הודעות שהמשתמש סוגר לאחר שבחר את‬
‫העקומה‪ .‬עקומה נבחרת ע"י הקשה בעכבר עליה‪ ,‬והיא מודגשת בקו עבה למשך כשנייה‪ .‬ניתן להקיש על כמה עקומות‬
‫לפני שמאשרים (האחרונה נקלטת)‪ .‬כל עקומה שנבחרת נמחקת מן התצוגה (כדי למנוע בחירה חוזרת)‪ .‬כאשר נבחרו‬
‫עקומות כמספר שצוין‪ ,‬התוכנית מחזירה מערך‪-‬תאים עם כל הנתונים המספריים של העקומות שנבחרו‪ ,‬ומציגה בגרף רק‬
‫את העקומות שנבחרו‪.‬‬
‫‪load acid.txt‬‬
‫כדוגמא להפעלת הפונקציה ניקח את הנתונים מהקובץ ‪acid.txt‬‬
‫))‪plot acid(:,1),acid(:,2‬‬
‫נתחיל משרטוט של כל העקומות‪:‬‬
‫נפעיל את הפונקציה‪:‬‬
‫‪0.2‬‬
‫;‪curveData=d9curve_select‬‬
‫‪0.15‬‬
‫‪0.1‬‬
‫‪0.05‬‬
‫‪0‬‬
‫‪900‬‬
‫עמ' ‪ 9‬מתוך ‪9‬‬
‫שיעור ‪9‬‬
‫‪850‬‬
‫‪800‬‬
‫‪750‬‬
‫‪700‬‬
‫‪650‬‬
‫‪600‬‬
‫‪-0.05‬‬
‫‪550‬‬
‫מאי ‪15‬‬