תירגול 6 MATLAB Structures & Cell Arrays + עיבוד נתונים פיני טנדייטניק 1
הודעה לתלמידים האם ראיתם את הדואל של סמדר על: שיעור ביום שלישי בשש, האם זה מתאים לכם? 2
מרצה : ד"ר סמדר שץ Email : Smadar.Shatz@biu.ac.il Site : https://faculty.biu.ac.il/~shatz/matlabeng/2017/index.html מתרגלים : פיני טנדייטניק Email : pinit@biu.ac.il Site : http://www.eng.biu.ac.il/~pinit/matlabcourse_2017b/ Cellular: 050-7929-785 מתרגל : יוסף בקר Email: Alanbekker@gmail.com 3
ex6a_dtmf (1) Keypad Based on ex5a_dtmf 4
ex6a_dtmf (2) DTMF Keypad Frequencies 1209 Hz 1336 Hz 1477 Hz 1633 Hz 697 Hz 1 2 3 A 770 Hz 4 5 6 B 852 Hz 7 8 9 C 941 Hz * 0 # D 5
ex6a_dtmf (3) כתוב סקריפט אשר אשר מתבסס על :ex5a_dtmf.1 טענו את מטריצת הלחצנים מקובץ TEXT TXT.2 היפכו את משתנה ה ל TEXT CellArray.3 בחרו סיפרה שמגיעה מ menu (תוך שימוש ב למשתנה מסוג ( CellArray.4 ב ex5a_dtmf: השתמשנו במערך תידרי ה DTMF (שורה ועמודה) ופקודת menu לקבלת הסיפרה שנבחרה ב meshgrid ב ex6a_dtmf: השתמשו בפקודת find על מטריצת הכפתורים לצורך מציאת אינדקס שורה ואינדקס עמודה לצורך קבלת 6 התדרים
ex6a_dtmf (4) 5. קיבעו את משך הסימולציה בעזרת פקודת input.6 בנה מחרוזת תווים של שם הקובץ שבו ישמרו וקטור האות והזמנים, DTMF<char>T<total_time>f<smapling_frequency>.txt (מאחר שסולמית וכוכבית אינן תווים חוקיים בשם קובץ, יש להחליף סולמית ב- H וכוכבית ב- x )!!!! 7. היפכו את הכותרת לשלוש שורות טקסט 8. שימרו את מערכי הדגימות והזמנים כשתי עמודות ASCII עם כותרת, ע"י פקודות stdio (אין להשתמש בלולאה!!!!) 7
ex6a_dtmf (5) Buttons buttons = mat2cell(b(:),ones(numel(b),1),1); UserSelectedCharIndex= menu('select a Char',buttons); 8
ex6a_dtmf (6) Find usage frow = [697 770 852 941]; fcol = [1209, 1336, 1477, 1633]; % [F1,F2]=meshgrid(frow,fcol) % f1 = F1(UserSelectedCharIndex) %frow(r) % [Hz] % f2 = F2(UserSelectedCharIndex) %fcol(c) % [Hz] % Tirgul #6 Solution - change #1 [r,c]=find(b==mychar) f1 = frow(r) % [Hz] f2 = fcol(c) % [Hz] 9
ex6a_dtmf (6) Using Logical Handling file names with * or # FileNameOutput(FileNameOutput=='*')='x' FileNameOutput(FileNameOutput=='#')='H' 10
11 Old : ex5a_dtmf (5)
12 NEW : ex6a_dtmf (7)
ex6a_dtmf (8) Read DTMF matrix from File : A=fscanf(Fh,'%c %c %c %c \n') % NOTE : NO loop is needed (* Full key pad with all characters) 13
ex6b_read_csv (1) קראו קובץ csv לפי בחירת המשתמש, מבין הקבצים בתיקיית.\eng2017data\RC\ השתמשו בפקודת inputdada אשר מחזירה.structure שרטטו את שתי העמודות המספריות השנייה והשלישית כפונקציה של הראשונה. השתמשו בכותרות של שתי העמודות האלה לצורך legend ובכותרת העמודה הראשונה לצורך מקרא בציר x. 14
ex6b_read_csv (2) MyData=importdata(FullFileName1); t=mydata.data(:,1); t=t-t(1); Vin=MyData.data(:,2); Vout=MyData.data(:,3); plot(t,vin,t,vout); xlabel(mydata.textdata(1)) legend(mydata.textdata(2:3)) 15
ex6b_read_csv (3) Variable Structure 16
17 ex6b_read_csv (4)
18 ex6b_read_csv (5)
תרגילי כיתה 19
ex6c_date : קראו בתעוד על פקודת date שמורו את התאריך במשתנה החליפו מקף ברווח indexing) (use logical ליצור משתנה-מחרוזת בשם DateMsg שתוכנו הוא Date: <the date>.1.2.3.4 Result : Date: 24 Mar 2014 20
ex6d_coins (1) בצע הטלת מטבע N פעמים וחזור על הניסוי M פעמים. אם Nקטן מ- 50, קבע אותו ל- 50. כנ"ל לגבי M<5.(אין להשתמש בפקודת ( IF שמור את המידע במערך, וחשב את הממוצע וסטיית תקן של מערך התוצאות. שמור את מערך הממוצעים לקובץ טקסט בשם: (שם קובץ לדוגמה coinsm<m value>n<n value>.txt (coins_m_10_n_100.txt : להזכירכם ניתן להגריל מטריצה 21
ex6d_coins (2) פלט התוכנית בקובץ טקסט 22
ex6e_envelop (1) נתון אות שהוא מכפלה של שני אותות סינוסיים בתדר איטי 500 הרץ ובתדר מהיר 10000 הרץ. לחשב מינימום ומקסימום מקומיים ולהציגם על הגרף לנרמל את האות בתחום [b+..a-] תרגיל זה מתבסס על ex1g_envelop.m Note : AM Signal 23
Maximum point A B C Maximum point condition: A>B & A>C 24
25 ex6e_envelop (2)
ex6e_envelop_starter.m (3) f1=500 f2=10000 FSampling=50000; % [Hz] Ts=1/FSampling; %[sec] TSignal=5e-3; %[sec] N=TSignal/Ts; % total number of samples ii=(1:n)-1; t=ii*ts; y1=0.1*sin(2*pi*f1*t); y2=sin(2*pi*f2*t); y=y1.*y2+3; plot(t,y,'c') 26
ex6f_read_wav (1) תרגיל זה מבוסס על הסקריפט ex1e_read_wav מבקשים מן המשתמש לבחור קובץ מתוך התיקייה.\data_files\wav קוראים את הקובץ בעזרת importdata ומשתמשים בשדות של ה- structure שמתקבל כדי לחשב את זמני הדגימות ולהציג את הסיגנל. שם הקובץ שנבחר יופיע ככותרת לגרף. במקום לשמור את המשתנים לקובץ, שומרים את הגרף לקובץ PDF בשם זהה לשם הקובץ שנבחר (אבל עם סיומת.(PDF מהו תדר הדגימה של קובץ ה? WAV 28
29 ex6f_read_wav (2)