© אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה קורס תוכנת מטלב ויישומיה שיעור מס' :2עבודה עם מערכים יצירת מערכים יצירת סדרות האופרטור :יוצר מערך שורה שאיבריו סדרה חשבונית. start : step : stop 16 3.0000 14 2.5000 12 2.0000 8 10 1.5000 6 1.0000 2:2:16 = ans 2 4 0.5:0.5:3 = ans 0.5000 אם stepחסר ,ברירת המחדל היא .1 start : stop 11 10 9 7 8 6 5 3 4 2:11 = ans 2 אם stopאיננו חלק מן הסדרה החשבונית המוגדרת ע"י startו ,step-הפעולה עוצרת באיבר האחרון לפני .stop 6.5000 5.5000 3.5000 4.5000 2.5000 9.5000 0.5:10 = ans Columns 1 through 7 0.5000 1.5000 Columns 8 through 10 7.5000 8.5000 ליצירת סדרה יורדת יש לקחת stepבערך שלילי. start:-step:stop 5 2.5000 0.5000 6 7 4.5000 8 6.5000 פקודת linspaceליצירת סדרה ליניארית עם nאברים 10:-1:5 = ans 10 9 8.5:-2:0 = ans 8.5000 )linspace(start,stop,n אם nחסר ,ברירת המחדל היא 100מספרים. 10 a 8 6 b פקודת logspaceליצירת סדרה לוגריתמית עם nאיברים בין 10ל.10 - )linspace(0,10,6 = ans 0 2 4 )v=logspace(a,b,n כלומר ,המרווחים בין איברי ) log10(vקבועים .אם nחסר ,ברירת המחדל היא .50 100.0000 63.0957 39.8107 25.1189 2.0000 1.8000 1.6000 1.4000 )v = logspace(1,2,6 = v 10.0000 15.8489 )log10(v = ans 1.0000 1.2000 ציון מפורש של איברי המערך יצירת מערך שורה :רשימת איברים מופרדים ברווחים ][a1 a2 a3 a4 ... או בפסיקים עמ' 1מתוך 10 ]or: [a1,a2,a3,a4... שיעור 2 מרץ 15 קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ 0 ]V15 = [3 7 -1 3 0 = V15 3 7 -1 3 יצירת מערך עם יותר משורה אחת: סיום שורה ע"י ><ENTER 9 3 ]-1 3 סיום שורה ע"י ; 9 3 ]; 4 יצירת מערך עמודה :אבר אחד בכל שורה. M23 = [4 2 9 ]2 -1 3 = M23 4 2 2 -1 M23 = [4 2 9 ; 2 = M23 4 2 2 -1 V41 = [1 ; 2 ; 3 = V41 1 2 3 4 ◄תרגיל :1לכתוב סקריפט d2rotmatשמסובב נקודה במישור בזווית נתונה ,לפי נוסחה .8הסקריפט מניח שקואורדינטות הנקודה נתונות ע"י המשתנים x,yושזווית הסיבוב נתונה ע"י המשתנה .alphaהסקריפט מייצר את מטריצת הסיבוב rotmat ומשתנה rotxyשהוא וקטור עמודה של הקואורדינטות לאחר סיבוב. מערכים מיוחדים קיימות במטלב פקודות לייצור מערכים מסוגים שונים .כמה דוגמאות: מס' ארגומנטים לממדים ארגומנט אחד לממדים קבועים מטריצה nxmשכולה 1 )ones(n,m )ones(sz מטריצה nxmשכולה 0 )zeros(n,m )zeros(sz )nan(n,m )nan(sz מטריצה nxmשכולה NaN כאשר szהוא מערך שורה של הממדים. במערך דו ממדי ].sz=[n m דוגמאות :מטריצה שכולה 5 מערך שורה שכולו NaN NaN NaN NaN NaN )5*ones(2,4 =ans 5 5 5 5 5 5 5 5 )]nan([1 6 = ans NaN NaN מספרים אקראיים התפלגות אחידה בין 0ל1- התפלגות גאוסיאנית סביב 0ברוחב 1 מספרים שלמים בהתפלגות אחידה בין 1לK- )rand(n,m )rand(sz )randn(n,m )randn(sz )randi(K,n,m )randi(K,sz ממדים בפקודות שלמעלה: ניתן ליצור מערכים רב-ממדיים ע"י ציון יותר מ 2-ממדים. אם מציינים רק מימד אחד ,נוצרת מטריצה ריבועית. )rand(1,4 =ans 0.9134 0.1270 0.9058 0.8147 דוגמאות: עמ' 2מתוך 10 שיעור 2 מרץ 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה )randn(3 = ans -0.4336 0.8622 0.5377 0.3426 0.3188 1.8339 3.5784 -1.3077 -2.2588 6 1 3 5 9 )randi(9,5 =ans 7 9 8 9 7 6 2 2 7 1 4 9 4 8 9 9 6 9 8 5 ◄תרגיל :2ליצור סדרה של nמספרים אקראיים בהתפלגות אחידה בין aל.b- load LDGWsineGW )'plot(T,deer,'k hold on )'plot(T,deer+6*rand(size(deer))-3,'c ◄דוגמא :1נתון סיגנל. להוסיף לסיגנל רעש בהתפלגות אחידה בין -3ל.3- 45 40 35 30 25 20 100 90 80 70 60 50 40 30 20 10 0 15 מטריצות אלכסוניות מטריצת יחידה בגודל nxn )eye(n 0 0 1 יצירת מטריצה אלכסונית ממערך חד-ממדי v )diag(v 0 0 0 6 )diag(v,k יצירת מטריצה עם אלכסון משני k :חיובי מעל האלכסון הראשי, 0 0 0 0 שלילי מתחת לאלכסון הראשי. )diag(M,k מציאת אלכסון של מטריצה .Mאם kלא מצוין ,ברירת המחדל היא ( k=0אלכסון ראשי) .הפקודה מוגדרת גם למטריצות מלבניות. עמ' 3מתוך 10 0 1 0 )eye(3 = ans 1 0 0 שיעור 2 )]diag([5 -1 8 6 = ans 5 0 0 0 -1 0 0 0 8 0 0 0 )diag([5 -1 8],-1 = ans 0 0 0 5 0 0 0 -1 0 0 0 8 ] G=[5 -1 8 ; 3 1 7 = G 5 -1 8 3 1 7 )diag(G = ans 5 1 מרץ 15 קורס תוכנת מטלב ויישומיה ד"ר סמדר שץ © אגף התקשוב ,אוניברסיטת בר אילן ◄דוגמא :2להראות איך לכפול כל שורה של מטריצה במספר אחר ,ע"י כפל במטריצה אלכסונית. 1 1 1 )]4 1 1 1 0 0 4 2 3 4 ◄תרגיל :3לכתוב סקריפט d2chess1שמייצר "מטריצת לוח שחמט" (לדוגמא משמאל מטריצת שחמט בגודל )5בעזרת .diag 2 3 4 1 0 0 1 1 0 0 1 1 0 )Q = ones(3,4 = Q 1 1 1 1 1 1 P3 = diag([2 3 = P3 2 0 0 3 0 0 P3*Q = ans 2 2 3 3 4 4 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 טרנספורמציה ארגון מחדש של האיברים מטלב מסדר בזיכרון מערכים ממימד 2ומעלה לפי עמודות :תחילה כל האברים ]A = [1 2 3 4 ; 5 6 7 8 = A מהעמודה הראשונה ,אח"כ כל האברים מן העמודה השנייה וכו' .אם יש יותר ממישור אחד ,לאחר כל האברים מהמישור הראשון יופיעו האברים מהמישור השני וכו' לפי אותו סידור. 4 3 2 1 8 7 6 5 ) A(:) A(:מחזיר וקטור עמודה של כל האברים של Aכפי שהם מסודרים בזיכרון. = ansפקודת reshapeמארגנת מחדש את אברי המערך מבלי לשנות את 1 5 2 6 3 7 4 8 מיקומם בזיכרון. )…reshape(A,d1,d2, )reshape(A,sz )]reshape(A,[2 2 2 = )ans(:,:,1 1 2 5 6 = )ans(:,:,2 3 4 7 8 )reshape(A,4,2 = ans 1 3 5 7 2 4 6 8 מטריצה מוחלפת :שורות הופכות לעמודות ועמודות לשורות. )transpose(A 'A. צמוד מוחלף :העמודות של Bהן הצמוד המרוכב של השורות של Aוהשורות של Bהן )B = ctrsnapose(A הצמוד המרוכב של העמודות של .A 'B = A אם המטריצה ממשית ,אין הבדל בין ' AלA.' - 5 6 7 8 עמ' 4מתוך 10 שיעור 2 'A = ans 1 2 3 4 מרץ 15 קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ ◄תרגיל :4בהינתן ,nליצור וקטור עמודה שאבריו הם המספרים מ 1-עד .n ;n=3;m=5 ')reshape(1:n*m,m,n ◄דוגמא :3בהינתן n,mלייצר מטריצה nxm שהשורות שלה הן מספרים עוקבים. 5 10 15 4 9 14 3 8 13 2 7 12 = ans 1 6 11 שרשור ()concatenation שרשור :פעולה המצרפת כמה מערכים למערך אחד .השרשור שומר על סדר האברים בכל מערך. אופרטור השרשור ( [ ] :סוגריים מלבניים המקיפים את האופרנדים). בשרשור אופקי מצרפים את העמודות של המערכים המשורשרים למערך אחד שמספר העמודות שלו כסכום מספר העמודות של המערכים .אורך העמודות חייב להיות זהה בכל המערכים .צורת כתיבה: ][A B אפשר גם: ][A,B ;]c = [2; 3; 4; 5 ]M = [c c.^2 c.^3 = M 2 4 8 3 9 27 4 16 64 5 25 125 ◄דוגמא :4שרשור עמודות ליצירת מטריצה: בשרשור אנכי מצרפים את השורות של המערכים המשורשרים למערך אחד שמספר שורותיו כסכום מספר השורות של המערכים. אורך השורות חייב להיות זהה בכל המערכים .צורת כתיבה: ][A ; B load arrays ]W = [R; S; R = W 3 6 1 2 3 6 ◄דוגמא :5שרשור שורות ליצירת מטריצה 8 3 8 ◄תרגיל :5לכתוב סקריפט d2chess2שמייצר "מטריצות לוח שחמט" (לדוגמא משמאל מטריצת שחמט בגודל )4בגודל 4 ,2ו 8-ע"י שרשור 0 1 0 1 1 0 1 0 0 1 0 1 1 חוזר של מטריצת יחידה מגודל .2 פקודת שרשור לאורך מימד כלשהו :dim 0 1 0 )cat(dim,A,B שרשור אנכי: )cat(1,A,B שרשור אופקי: )cat(2,A,B שרשור שתי מטריצות מאותו מימד ליצירת מערך תלת ממדי: )cat(3,A,B עמ' 5מתוך 10 שיעור 2 מרץ 15 קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ פעולות על חלק ממערך במטלב אינדקס האיבר הראשון בכל מימד הוא .1 המימד הראשון מתייחס למקום האיבר בעמודה (או למספר השורה). המימד השני מתייחס למקום האיבר בשורה (או למספר העמודה). המימד השלישי (אם יש) מתייחס למספר המישור. גישה לאיברים גישה לאיבר במערך :Aסוגריים עגולים. )A(n1,n2,... C = C מערך חד-ממדי (שורה או עמודה) :מספיק אינדקס אחד. 4 7 8 1 8 )C(3 =ans 8 load arrays R = R 3 6 )R(2 = ans 6 )C(3,1 = ans 8 אפשר גם כך: מערך דו-ממדי 2 :אינדקסים 8 3 6 9 גישה עם אינדקס אחד למערך עם מספר כלשהו של ממדים :האינדקס מתייחס למקום בזיכרון. )R(1,2 = ans 6 A = A 3 0 )A(1,3 = ans 8 )A(4 = ans 9 גישה עם מספר ממדים פחות ממספר ממדי המערך :ברירת מחדל המימדים החסרים = 1 גישה עם מספר ממדים יותר ממספר ממדי המערך :אפשרי אם הממדים ה"מיותרים" = 1 endהאבר האחרון :בעל משמעות זו רק בהקשר של גישה לאיברי מערך. האבר האחרון בשורה 1 האבר האחרון בעמודה 2 :כל האיברים לאורך מימד מסוים (רק בהקשר לגישה לאברי מערך). עמודה שניה: שורה שניה: 3 עמ' 6מתוך 10 שיעור 2 9 )C(end = ans 1 )A(1,end = ans 8 )A(end,2 = ans 9 )A(:,2 = ans 6 9 )A(2,: = ans 0 מרץ 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה )C(1:3 סדרה של אינדקסים :מחזירה סדרה של איברים. = ans 4 7 8 8 3 )]C([1 4 = ans 4 1 )A(:,2:3 = ans 6 9 ◄תרגיל :6כל האברים ממערך חד -ממדי מסוים ,בלי הראשון .כנ"ל בלי האחרון. )indx = randi(length(s),1,n ◄דוגמא :6נתונה קבוצה sשל מספרים .להשתמש בפקודה randiכדי לייצר סדרה vשל nמספרים אקראיים שערכיהם לקוחים מתוך הסדרה .s = indx 4 3 4 4 4 2 1 8 7 7 7 5 )v = s(indx = v 7 9 ;s = [9 5 8 7]; n=7 ביצוע פעולות בין שני איברים סמוכים בכל המערך :A )A(end )A(3 )A(end-1 )A(end )A(2 )A(1 )A(3 )A(2 )A(1:end-1 )A(2:end )A(1 ◄דוגמא " :7ממוצע רץ" = ממוצע על כל שני אברים סמוכים. החלקה ע"י ממוצע רץ: ;y_av = (y(1:end-1)+y(2:end))/2 נקרא ונשרטט באדום את הנתונים הגולמיים. ;x_av = (x(1:end-1)+x(2:end))/2 )'hold on; plot(x_av,y_av,'k load acid.txt 0.2 ;)x = acid(:,1 0.15 ;)y = acid(:,2 )'plot(x,y,'r 0.1 נחשב ונשרטט בשחור על אותו גרף את הממוצע הרץ: 0.05 0 900 850 800 750 700 650 600 -0.05 550 חתך :התייחסות לאינדקס בערך נתון באחד הממדים ולכל האינדקסים בשאר הממדים. דוגמאות :עמודה במטריצה ,שורה במטריצה ,מישור במערך תלת-ממדי. במידע טבלאי ,משתמשים בחתך כדי לבדוק תלות במשתנה אחד כאשר המשתנה השני קבוע. ◄תרגיל : 7קריאת נתונים וארגונם מתוך קובץ נתוני לידות .births.xls קריאת קובץ אקסל נעשית ע"י פקודת xlsreadבאופן הבאnums=xlsread('filename') : לקרוא את הטבלה המספרית .להפריד עמודת שנים לחוד וטבלת נתוני לידות לחוד. מהי השנה האחרונה? לשרטט את נתוני הלידות בשנה האחרונה כתלות במס' החודש. לשרטט את נתוני הלידות בחודש השני כתלות בשנה. לשרטט את נתוני הלידות בחודשים רציפים כרונולוגית. עמ' 7מתוך 10 שיעור 2 מרץ 15 קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ שינוי איברים שינוי ערכים של חלק מאברי המערך נעשה ע"י השמה לאברים אלה ע"י ציון האינדקסים .לדוגמא ,נתון: 1 1 1 השמה לאיבר בודד: 1 1 1 השמה למספר אברים אפשרית ,אם המימד של האינדקסים בצד שמאל זהה למימד של מערך בצד ימין .דוגמא" :שתילת" השורה ] [6 7 2בחלק מן השורה הראשונה 2 1 1 של .A הרחבה סקלרית :השמת ערך אחיד למספר מקומות. דוגמא :מילוי השורה האחרונה בערך -1 2 1 -1 )A = ones(3,4 = A 1 1 1 1 1 1 1 1 1 A(2,3) = 5 = A 1 1 1 1 1 5 1 1 1 ]A(1,2:4) = [6 7 2 = A 1 6 7 1 1 5 1 1 1 A(end,:)=-1 = A 1 6 7 1 1 5 -1 -1 -1 ◄תרגיל :8איפוס כל איבר שני במערך חד -ממדי. ;n=5 ◄דוגמא :8יצירת לוח שחמט בגודל nxmע"י הצבה. ;m=6 ;)chess = zeros(n,m ניצור טבלה של אפסים. chess(2:2:end,2:2:end)=1 נמלא את המקומות הזוגיים. 0 1 0 1 0 0 0 0 0 0 נמלא גם את המקומות האי -זוגיים. 0 1 0 1 0 1 0 1 0 1 = chess 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 chess(1:2:end,1:2:end)=1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 = chess 1 0 1 0 1 מחיקת איברים מחיקת איברים במערך מקטינה את המימד שלו ו"מזיזה" את האיברים שאחרי אלה שנמחקו (נשאר רצף). צורת הכתיבה :ע"י השמת מערך ריק [ ] לאיברים שמוחקים .ניתן למחוק רק "חתכים" (שורות ,עמודות או מישורים שלמים). מחיקת עמודה 0 9 0 2 1 -1 מחיקת שורה 9 0 עמ' 8מתוך 10 שיעור 2 1 -1 ] [=)A(:,2 = A 1 7 1 5 -1 -1 ] [=)A(1,: = A 1 5 -1 -1 מרץ 15 קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ ◄תרגיל :9מחיקת כל אבר שני במערך חד-ממדי .מחיקת עמודה אחרונה במטריצה. הוספת איברים השמה למקום שאינו קיים במערך MATLAB :משלים את המערך למלבן ע"י מילוי באפסים במקומות שעבורם לא צוינו ערכים. 0 9 0 2 1 -1 7 5 -1 6 1 -1 A(2,5)=9 = A 1 1 -1 ◄תרגיל :10בפקודה אחת ליצור מערך של אפסים 3x5למעט האבר בפינה הימנית התחתונה שהוא .1 אלגברה ליניארית פתרון מערכת משוואות ליניאריות מערכת של משוואות ליניאריות ניתנת לכתיבה בצורה מטריציונית CX=R :כאשר Cמטריצת המקדמים X ,וקטור עמודה של נעלמים ו R-וקטור עמודה של קבועים (צד ימין) .במטלב כדי למצוא את Xיש לחלק את המשוואה ב C-מצד שמאל.X = C\R : כדי לפתור את מערכת המשוואות: ]C = [3 5 -1; 2 3 0; 4 -2 5 3x + 5y - z = 18 = C = 12 2x + 3y 4x - 2y+ 5z = 13 כותבים במטלב: 3 5 -1 2 3 0 4 -2 5 ]R = [18; 12; 13 = R 18 12 13 X = C\R = X 3.0000 2.0000 1.0000 קו-רגרסיה כאשר יש יותר משוואת מאשר נעלמים ,יש אילוץ-יתר ( )over-determinedולא ניתן לפתור את כל המשוואות כך שצד שמאל = צד ימין .במקרה זה מטלב פותר לריבועים מינימליים ,כלומר שסכום הריבועים של CX-Rיהיה מינימלי. התאמה ליניארית :עבור סדרה של נקודות xiנתונים ערכי הפונקציה yiורוצים למצוא מקדמים a,bכך שהקו y=ax+bיעבור קרוב לכל הנקודות .אם x,yוקטורי עמודה ,ניתן לכתוב את המשוואות לכל הנקודות כך C[ab]=y :כאשר ] 1( C=[x 1מסמן עמוד של -1 ים) ו [ab]-וקטור עמודה .הפתרון הוא ab=C\yכאשר האיבר הראשון ב ab-הוא המקדם של xוהאיבר השני הוא האיבר החופשי. עמ' 9מתוך 10 שיעור 2 מרץ 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה ◄דוגמא :9 26 raw linear fit inverse fit 24 22 הסקריפט d2carsקורא נתונים מקובץ carbigהנמצא במטלב, 20 ומשרטט את הקשר בין תאוצת מכונית למסה שלה. 18 מחושבת התאמה ליניארית בין המסה לתאוצה (שיפוע שלילי). 16 מחושבת התאמה ליניארית בין המסה להופכי של התאוצה (שיפוע 14 חיובי) .הנתונים "מתורגמים" בחזרה לתאוצה והמידע מוצג על הגרף. 12 10 5500 5000 4500 4000 3500 3000 2500 2000 8 1500 רגרסיה ליניארית רב-ממדית ניתן להכליל רגרסיה ליניארית למספר כלשהו של משתנים בלתי תלויים .עבור סדרה של נקודות xniכאשר nהוא מס' המשתנה הבלתי תלוי ו i-מס' הנקודה ,נתונים ערכי הפונקציה yiורוצים למצוא מקדמים a1,a2,a3,...,bכך שהביטוי a1x1+a2x2+a3x3+...+b יקבל ערכים קרובים ככל האפשר ל .y-אם yוקטור עמודה ו x-מטריצה שאורך העמודות שלה כמספר הנקודות ,ניתן לכתוב את המשוואות לכל הנקודות כך C[anb]=y :כאשר ] C=[x 1ו [ab]-וקטור עמודה .הפתרון הוא anb=C\yכאשר האיברים הראשונים ב - anbהם המקדמים של המשתנים הבלתי תלויים xוהאיבר האחרון הוא האיבר החופשי. התאמה ליניארית לפונקציות לא ליניאריות קומבינציה ליניארית של פונקציות לא ליניאריות ניתן להכליל עוד רגרסיה ליניארית :המשתנים xnהם לא בהכרח משתנים בלתי-תלויים במרחב רב-ממדי ,אלא יכולים להיות גם פונקציות שונות של משתנים בלתי -תלויים (או אפילו משתנה בלתי-תלוי אחד) .למשל xnיכולים להיות חזקות שונות של .xבמקרה זה העמודות של המטריצה Cלא יהיו קואודינטות שונות אלא פונקציות שונות של אותה קואורדינטה .xההתאמה תהיה ליניארית כל עוד הפונקציות עצמן אינן כוללות פרמטרים בל תי ידועים וכל עוד מחפשים רק מקדמים (כופלים) של הפונקציות. לדוגמא ,אם רוצים למצוא מקדמים לנוסחה y = a1x12+a2x22+a3x1x2+a4x1+a5x2+b :אז המטריצה Cתיכתב כך: ]C = [x12 x22 x1x2 x1 x2 1 המרה מפונקציה לא-ליניארית לפונקציה ליניארית אם ניתן "לחלץ" את xמן הנוסחה כך שמקבלים x=af(y)+bאז ניתן למצוא את a,bע"י התאמה ליניארית .דוגמאות: פונקציה מקורית תהליך התאמה ערך הפרמטרים y Ae ax ln y B ax A eB y Ae ax y 2 a b x2 עמ' 10מתוך 10 ln y B b x 2 A e B , a b 1 c d x2 y c d שיעור 2 a d1 , b מרץ 15
© Copyright 2024