© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
קורס תוכנת מטלב ויישומיה
קורס תוכנת מטלב ויישומיה
שיעור מס' :5משתני טקסט
נתונים טקסטואליים
נתונים טקסטואליים מופיעים בהקשרים הבאים:
נתונים לתוכנית .לדוגמא :שמות אנשים ,ערים ,מוצרים וכו' וכן טקסטים שלמים למשל ספרים.
שמות בקוד עצמו .לדוגמא :שמות משתנים ,קבצים.
אנוטציה בגרפיקה :כותרות לצירים ולגרף ,מקרא ,טקסט חופשי.
מאפיינים שונים לפעולות בתוכנית .לדוגמא :סימונים לצבעים ולסגנון קו בגרפיקה (פקודת ,)plotפורמט כתיבה לקובץ גרפי
(פקודת ,)printוכן פקודות שנראה בהמשך שיעור זה.
מהם תווים ומחרוזות תווים
תו הוא יחידת -מידע שמתייחסת לסימן גרפי .דוגמה פשוטה לתו היא אחת מאותיות האלפבית .תווים כוללים גם את סימני הספרות,
סימני פיסוק ,סימנים מיוחדים (למשל @ או ,)$וכן סימן רווח .תווי -בקרה הם תווים שאינם ניתנים לקריאה אבל מסמנים הוראות
להצגה של תווים אחרים ,לדוגמא :מעבר לשורה חדשה ,קפיצה (סימן טאב) ,חזרה אחורה מקום אחד ועוד.
במחשב תווים מיוצגים ע"י קודים ,שהם ערכים מספריים .ההתאמה בין התווים לקודים שלהם נקראת קידוד .קיימות כיום מערכות
קידוד רבות ,ביניהן קוד UTF8 ,asciiועוד .בגירסאות מוקדמות של מטלב הוכר רק קידוד .asciiכיום ניתן לעבוד עם כל קידוד
המוכר ע"י המערכת ,כאשר ניתן גם לשנות את ברירת המחדל לקידוד.
מחרוזת תווים היא שורה מסודרת של תווים .דוגמא פשוטה היא שורת-טקסט .במטלב מחרוזת תווים היא מערך חד-ממדי של
תווים( .במטלב ניתן ליצור גם מערכי תווים רב-ממדיים).
מטלב מציין קבועי -מחרוזת (מחרוזות שהן חלק מן התוכנית עצמה) בצבע ייחודי.
עבודה עם משתני טקסט
יצירת מחרוזות
בדומה לנתונים מספריים ,אפשרות אחת ליצירת משתני מחרוזת היא קריאה מקובץ (על כך בהמשך).
ליצירת מחרוזות בתוך התוכנית ,הצורה הנפוצה ביותר היא ע"י כתיבת האותיות בין גרשיים.
'!' = mychar
= mychar
!
'mysay = 'This is a string
= mysay
This is a string
)char(80
= ans
P
)char(40:50
= ans
()*+,-./012
)blanks(n
ליצירת תו בודד:
ליצירת מחרוזת:
יצירת תו מתוך הקידוד שלו
יצירת מחרוזת מתוך סדרת קודים
יצירת מחרוזת של nתווי רווח
המרה ממספר למחרוזת ,כלומר :מחרוזת התווים שמייצגת באופן קריא את המספר
עמ' 1מתוך 9
שיעור 5
)num2str(x
אפריל 15
קורס תוכנת מטלב ויישומיה
© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
)num2str(x,n
לכלול לא יותר מ n-ספרות משמעותיות:
)int2str(x
המרה למחרוזת של החלק השלם בלבד של מספר (החלק השברי מושמט)
פעולות -מערך על מחרוזות
מאחר שמחרוזות הן מערכים ,כל הפעולות המוגדרות במטלב על מערכים מוגדרות גם על מחרוזות.
]yoursay = [mysay mychar
= yoursay
!This is a string
;x = 3.5
' msg = ['The value of x is:
])num2str(x
= msg
The value of x is: 3.5
למשל שרשור:
כך יש לבנות טקסט להצגת מספר:
)yoursay(3:7
= ans
is is
]' names=['Ruthi';'Moshe';'Avram';'Dana
= names
Ruthi
Moshe
Avram
Dana
שליפת חלק ממחרוזת:
ניתן ליצור גם מערכי תווים דו-ממדיים,
אבל רק אם כל המחרוזות באותו אורך.
(אם לא ,ניתן "לרפד" את המחרוזות הקצרות יותר ברווחים .צורת
עבודה זו פחות נוחה ובהמשך נכיר סוגי משתנים שמתאימים יותר
לעבודות עם קבוצות של מחרוזות).
◄דוגמא :1שרשרת DNAבנויה משני "גדילים" המחוברים ביניהם לאורכם .כל "גדיל" בנוי מסדרה של בסיסים שמסומנים
באותיות .G,A,T,Cהגדילים מאורגנים כך שמול הבסיס Gבגדיל אחד נמצא הבסיס Cבגדיל שני ,מול Cנמצא ,Gמול Aנמצא T
ומול Tנמצא .Aהסקריפט d5pairsמייצג שרשרת DNAבאורך nע"י שתי שורות של אותיות (כל "גדיל" בשורה) כלומר מערך
. 2xnאת השורה הראשונה "מגרילים" באופן אקראי ,ואת השורה השנייה בונים בהתאם לשורה הראשונה.
n=30; d5pairs
= DNA
GCCAAACAGCAGAGGCCTGGACGGGTTTAT
CGGTTTGTCGTCTCCGGACCTGCCCAAATA
פקודות לטיפול במחרוזות
קיימות פקודות רבות לטיפול במחרוזות .לרשימה מלאה ,יש לחפש בתיעוד לפי .stringsלהלן כמה מן הפקודות השכיחות:
הסרת כל הרווחים לפני הסימן הראשון ואחרי הסימן האחרון שאינם רווחים( .משאירה רווחים
)strtrim(strng
בין הסימנים שאינם רווחים).
)'str2double('5.1e-3
= ans
0.0051
)str2num(strng
המרה ממחרוזת למספר אחד.
אם המחרוזת לא מצייגת מספר ,מתקבל .NaN
המרה ממחרוזת למספר/ים (יכול לפענח גם סדרה של מספרים).
חיפוש מחרוזת substrבתוך מחרוזת אחרת .strallאם נמצא ,מתקבל האינדקס בתוך strall
שבו נמצא התו הראשון של ( . substrאם יותר מפעם אחת ,מתקבל מערך של אינדקסים).
השוואה בין שתי מחרוזות .מתקבל trueאם שתי המחרוזות זהות false ,אחרת.
)strfind(strall,substr
)'strfind(mysay,'is
= ans
3
6
)strcmp(str1,str2
שאלה :מדוע לא מספיקה השוואה == ויש להשתמש בפקודת ?strcmp
עמ' 2מתוך 9
שיעור 5
אפריל 15
קורס תוכנת מטלב ויישומיה
© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
עבודה עם קבצים
קובץ הוא אוסף של נתונים שהמערכת מתייחסת אליהם כאל יחידה אחת.
לקובץ מספר מאפיינים ,לדוגמא:
שם הקובץ
תוכן הקובץ -המידע הנמצא על אמצעי האכסון.
גודל הקובץ -מס' הבתים שתופס באמצעי-האכסון.
תאריכים (יצירה ,שינוי).
הרשאות (אילו משתמשים רשאים לעשות בו פעולות שונות).
מידע על מיקום הקובץ באמצעי האכסון :מידע זה שקוף למשתמש ,ונמצא בניהול המערכת.
תיקייה היא סוג מיוחד של קובץ ,שכולל מידע על קבצים אחרים .קבצים אלה שייכים לתיקייה (נמצאים בתוכה) .חלק מן הקבצים
יכול להיות תיקיות.
קיים סימון של המערכת ל"שיוך" של קובץ לתיקייה :הסימן \ במערכת Windowsוהסימן /במערכת .Linuxלדוגמא
c:\lib1\lib2\myfile.txtפירושו שהתיקייה lib1נמצא ברמה העליונה של דיסק ,Cהתיקייה lib2נמצאת בתיקייה lib1והקובץ
myfile.txtנמצא בתיקייה .lib2
pathהוא ה"מסלול" שמוביל מהרמה העליונה של אמצעי האכסון לתיקייה שבה נמצא קובץ ,במקרה שלמעלה c:\lib1\lib2
שם מלא של קובץ כולל גם את השם וגם את ה ,path-כלומר c:\lib1\lib2\myfile.txt
פקודות מערכת לטיפול בקבצים
לרשימה המלאה של פקודות לטיפול בקבצים ,יש לחפש filesבתיעוד .להלן כמה פקודות שימושיות.
הארגומנטים של קלט ו/או פלט בכל הפקודות הבאות הם מחרוזות תוים (שמות של קבצים):
pwd
ה path-המלא לתיקייה בה נמצאים.
cd mydir
מעבר לתיקייה .mydirאם אין pathמלא ,מטלב מחפש את mydirתחת התיקייה הקיימת.
delete myfile
מחיקת קובץ myfile
copyfile ffrom fto
העתקת קובץ ffromלקובץ fto
בניית שם מלא של קובץ מחלקיו ,תוך הכנסת סימן התיקייה המתאים למערכת (,Windows
fullfile fdir fname
fullfile data-files pictures pic1.png
= ans
data-files\pictures\pic1.png
Linuxוכו') .לדוגמא:
פורמט פונקציה לעומת פורמט פקודה
במטלב אפשר לכתוב פקודות בשתי צורות:
פורמט פונקציה
פורמט פקודה
command arg1 arg2
הארגומנטים מפוענחים כטקסט
)command(arg1,arg2
מה שלא מוגדר בין גר שיים ,מפוענח כקלט רגיל :אותיות
כשמות משתנים ,מספרים כמספרים.
לא מתקבל פלט שניתן לשמור במשתנה.
פלט יתקבל לפי הגדרת הפקודה.
שמות ספציפיים הם חלק מן הפקודה.
מאפשר גמישות כאשר שמות ניתנים ע"י משתני מחרוזת.
עמ' 3מתוך 9
שיעור 5
אפריל 15
© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
קורס תוכנת מטלב ויישומיה
פורמט פונקציה
פורמט פקודה
save results.txt alltab -ascii
)'save(myfile,'alltab','-ascii
המשתנה alltabייכתב לקובץ ששמו הוא המחרוזת במשנה
תמיד יווצר קובץ בשם results.txt
.myfile
load acid.txt
)spectra = load(myfile
ייקרא תוכנו של הקובץ ששמו הוא המחרוזת שבמשתנה
תמיד יווצר משתנה בשם acid.txt
.myfileאחרי הקריאה הנתונים נשמרים במשתנה .spectra
print myplot.pdf -dpdf
)'print(myplot,'-dpdf
הפלוט יישמר בפורמט PDFבקובץ ששמו הוא המחרוזת
שבמשתנה .myplot
תמיד יווצר קובץ בשם .myplot.pdf
cd mydir
)cd(mydir
מעבר לתיקייה ששמה הוא המחרוזת שבמשתנה .mydir
מעבר לתיקייה .mydir
copyfile a.txt b.txt
)copyfile(file_a,file_b
הקובץ ששמו הוא המחרוזת במשתנה file_aיועתק לקובץ
תמיד יועתק קובץ a.txtלקובץ .b.txt
ששמו הוא המחרוזת במשתנה .file_b
בחירת קובץ מתוך רשימה
הפקודות הבאות מציגות למשתמש רשימה של קבצים לפי קריטריון מסוים ( ,)patternועוצרות את התוכנית עד שהמשתמש בוחר
באמצעות העכבר את אחד הקבצים .המשתמש יכול לעבור לתיקיות אחרות ,גם כאלה שנמצאות מעל לתיקייה הנוכחית .מתקבל
שם -קובץ (אותו אפשר לשמור במשתנה מחרוזת).
בחירת קובץ לקריאה :יש לבחור שם קובץ קיים.
)[FName,PName] = uigetfile(pattern,title
בחירת קובץ לשמירה :ניתן לבחור שם קיים או
)[FName,PName] = uiputfile(pattern,title
להזין שם שאינו קיים.
בחירת תיקייה:
)Pname = uigetdir(start_path,title
בכל הפקודות האלה:
שם קובץ (ללא .)path
FName
שם של תיקייה ,בצורת pathמלא.
PName
pattern
תבנית לבחירה ,בדרך כלל בשילוב * המסמן תווים כלשהם.
כדי לאפשר בחירת קובץ כלשהו בתיקייה כלשהי ,יש לציין **.
title
כותרת ,טקסט על פס-הכותרת של חלונית הבחירה.
ניתן להשמיט titleואז תופיע כותרת ברירת -מחדל.
ניתן להשמיט Pnameואז ידוע רק שם הקובץ (לא מומלץ ,מאחר שאין לצפות את תגובת המשתמש).
◄דוגמא :2הסקריפט d5plot_ecologyמבצע את הדברים הבאים:
א .נותן למשתמש לבחור קובץ מתוך רשימת קבצי .LGDW*.mat
ב .קורא את הקובץ ,ומשרטט את אוכלוסיות האנטילופות והעשב כפונקציה של הזמן.
ג .מוצא את נקודת המינימום של אוכלוסיית האנטילופות ומוסיף על הגרף ליד נקודה זו את ערכי הזמן והאוכלוסייה.
ד .כותב ככותרת לגרף פרמטרים נוספים של המערכת.
ה .שומר את הציור לקובץ ,PDFכאשר שם הקובץ זהה לשם קובץ הנתונים.
עמ' 4מתוך 9
שיעור 5
אפריל 15
© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
קורס תוכנת מטלב ויישומיה
Water supply = 4.02, W0 = 20.05, L0 = 20
65
deer
grass
60
55
50
population
45
40
35
30
)(29.4685,28.2276
100
90
80
70
60
50
time
30
40
20
0
10
25
קלט/פלט
קלט מן המשתמש
קלט מן המקלדת :פקודת inputמציגה מחרוזת תווים , promptעוצרת את ביצוע התכנית ומאפשרת למשתמש להקיש על
המקלדת .לאחר שהמשתמש מקיש על > ,<ENTERכל מה שהוקש מהצגת ה prompt-ועד מקש זה ,מתקבל כפלט של הפקודה.
קיימות שתי צורות לפקודה:
)resp = input(prompt
קלט מפוענח :מטלב מנסה לפענח את התווים שהוקשו כאילו
הוקלדו בחלון הפקודות ,והתוצאה נשמרת במשתנה .resp
)'raw = input(prompt,'s
קלט גולמי :התווים מועברים למשתנה rawכפי שהוקשו.
בחירת אפשרות מתוך תפריט :פקודת menuמציגה חלונית עם עמודה של כפתורים ,עוצרת את ביצוע התוכנית ומאפשרת
למשתמש להקיש על אחד מן הכפתורים עם העכבר .הפלט nשל הפקודה הוא המספר הסידורי של הכפתור עליו הוקש.
אופן השימוש בפקודה:
)n = menu(title,b1,b2,...,bN
title
כותרת ,טקסט שיופיע מעל עמודת הכפתורים.
b1, b2, ...bN
מחרוזות טקסט ,כל אחת תווית על כפתור בתפריט.
◄דוגמא :3הסקריפט d5birthsמבצע את הדברים הבאים:
13000
feb
aug
א .קורא נתוני לידות מקובץ ומציג כפונקציה של הזמן את נתוני כל
החודשים.
12000
11000
ב .נותן למשתמש לבחור עמודה ,צבע ומרקר.
10000
ג .חוזר על הבחירה עבור חודש נוסף.
9000
ד .מנקה את הפלוט ,מצייר רק את נתוני שני החודשים שנבחרו ,עם
8000
הצבעים והמרקרים שנבחרו ,ומציג מקרא.
7000
6000
2005
עמ' 5מתוך 9
שיעור 5
2000
1995
1990
1985
1980
1975
5000
1970
אפריל 15
© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
קורס תוכנת מטלב ויישומיה
קלט/פלט מפורש
עד כה הכרנו פקודות שמבצעות קלט/פלט על קובץ שלם ,בצורה שקופה לתוכנית .הפקודות בהמשך מאפשרות לקרוא או לכתוב
לקובץ בשלבים.
כל קובץ מסתיים בסימן end-of-fileהמציין למערכת את קצה הנתונים בקובץ( .זה אינו מספר או אחד מן הסימנים האפשריים
כחלק מן הנתונים).
בכל רגע נתון בטיפול בקובץ ,המערכת קוראת או כותבת למקום מסוים בקובץ .המערכת עוקבת אחרי מקום זה באמצעות הfile -
.pointer
בדרך כלל ,פעולת כתיבה או קריאה בודדת לא מתבצעת ישירות לאמצעי-האכסון ,אלא ל"חוצץ" ( :)bufferאזור שבו המערכת
מכינה את הנתונים הנקראים/נכתבים לקובץ .במטלב פעולה זו שקופה למשתמש.
הליך קריאה או כתיבה לקובץ כולל את השלבים הבאים:
פתיחת הקובץ :מציאת הקובץ לפי שם מלא ,איסוף מידע (מקום פיסי של הקובץ ומאפיינים נוספים) ,הקצאת ה,buffer-
הצבת ה file pointer-בהתחלת הקובץ .כל המידע הזה שקוף למשתמש ,וניתן לגשת לקובץ רק ע"י מציין File-IDשמצביע
על אוסף המידע שהמערכת שומרת לגבי הקובץ בכל זמן עיבודו.
כתיבה או קריאה לקובץ (אפשר יותר מפעולה אחת).
סגירת הקובץ :כתיבת ה buffer-לאמצעי האכסון ,כתיבת ( end-of-fileאם רלוונטי).
תוכנית שמשתמשת בקלט/פלט מפורש כוללת פקודות המבצעות את השלבים האלה .הפקודות לפתיחה וסגירה של קובץ הן:
)fID = fopen(filename, action
פתיחת קובץ:
fID
מציין לקובץ (להתייחסות בהמשך)
filename
שם הקובץ
action
הפעולה/ות לביצוע בקובץ
אפשרויות עבור :action
קריאה (ברירת מחדל)
''r
כתיבה (גם על קובץ קיים)
''w
הוספה לקובץ קיים (אם יש)
''a
אפשרויות נוספות מפורטות בתיעוד של הפקודה.
סגירת קובץ:
סגירת כל הקבצים הפתוחים:
)fclose(fID
)'fclose('all
קלט/פלט מקבצי טקסט
קבצי טקסט כוללים רק קודים של תווים .למרות שהקבצים מוצגים "בצורה דו ממדית" כלומר כאוסף של שורות זו מתחת לזו ,כל
קובץ הוא סדרה אחת של תווים .השורות מופרדות ביניהן בקובץ ע"י סימן newlineשמצויין בתוכנית מטלב ע"י '.'\n
הערה :בטיפול בקבצי טקסט במערכת ,Windowsלפעמים יש להוסיף מציין ' 'tל action-בפקודת fopenלקובץ טקסט כדי
שתוכנת NotePadתקרא את הקובץ כהלכה .לדוגמא ,במקום ' 'rלכתוב '( .'rtבקבצי טקסט ב Windows-יש ' '\n\rכלומר גם חזרה
לראשית השורה במקום רק ' '\nכלומר מעבר לשורה חדשה).
עמ' 6מתוך 9
שיעור 5
אפריל 15
ד"ר סמדר שץ
קורס תוכנת מטלב ויישומיה
© אגף התקשוב ,אוניברסיטת בר אילן
קריאה של שורת טקסט
)strng = fgetl(fID
קריאת מחרוזת תווים מהמקום הנוכחי בקובץ ועד סוף השורה.
strng
אם נקראו תווים :מחרוזת תווים (לאחר קידוד אך ללא פענוח תוכן).
אם ה file pointer-הקובץ :מספר = .-1
קריאה וכתיבה של טקסט לפי פורמט
הפורמט מציין את אופן ההמרה בין ייצוג פנימי (בינארי) של משתנים במטלב לטקסט קריא (מחרוזות תווים) .פקודת format
במטלב שהכרנו בשיעורים קודמים מגדירה כמה צורות המרה נתונות ,לצורך הצגה בחלון הפקודות .קלט/פלט מפורש מאפשר ציון
מגוון רחב יותר של פורמטים.
פורמט במטלב הוא מחרוזת תווים .המחרוזת יכולה לכלול "תווים חופשיים" אשר לא מתפענחים (נקראים או נכתבים כפי שהם
מופיעים בפורמט) ,וכן "שדות" שכל אח ד מהם מגדיר צורת המרה לגודל סקלרי (מספר או מחרוזת) אחד .בתוך הפורמט ,מזהים
את התחלת השדה בסימן %ואת סוף השדה לפי קוד ההמרה .כמו -כן אפשר לציין את רוחב השדה wשהוא מספר התווים
שהשדה יתפוס לאחר המרה ,וכן מאפיינים נוספים הרלוונטיים לכל סוג.
במידה ורוחב השדה עולה על מספר התווים הנוצרים מן ההמרה ,התווים מיושרים לימין ו"מרופדים" בתווי רווח משמאל.
להלן כמה סוגי שדות ומאפיינים נפוצים:
תו בודד
%c
מחרוזת תווים
%s
רוחב שדה w
%ws
%d
מספר (עשרוני) שלם
רוחב שדה w
"ריפוד" באפסים במקום בתווי רווח.
%wd
%0wd
%f
מספר עשרוני עם נקודה קבועה.
רוחב שדה ,wמתוכו pספרות אחרי הנקודה
"ריפוד" באפסים במקום בתווי רווח.
%w.pf
%0w.pf
%e
מספר עשרוני עם נקודה צפה.
רוחב שדה ,wמתוכו pספרות אחרי הנקודה
"ריפוד" באפסים במקום בתווי רווח.
%w.pe
%0w.pe
כתיבה ע"י פורמט
)fprintf(fID,format,A1,...,An
הפקודה לכתיבה לקובץ היא:
fID
מציין לקובץ .אם מושמט ,הפלט נכתב לחלון הפקודות.
format
מחרוזת הפורמט
ערכים להמרה .יכולים להיות ביטויים כלשהם (לא רק שמות משתנים).
A1,A2, ...An
מטלב עובר על כל הערכים במשתנים (לפי הסדר שבו הם מופיעים בפקודה) ובהתאמה על כל השדות שבפורמט .כל ערך מומר
בהתאם למאפייני השדה המתאים בפורמט.
אם משתנה הוא מערך ,אז קודם ממירים את כל האיברים שלו ורק אז עוברים למשתנה הבא .במקרה של מערך עם 2ממדים או
יותר ,עוברים על כל האברים בסדר שבו הם נמצאים בזיכרון -לפי עמודות.
עמ' 7מתוך 9
שיעור 5
אפריל 15
© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
קורס תוכנת מטלב ויישומיה
אם השדו ת בפורמט "נגמרים" לפני שהומרו כל הערכים שבמשתנים ,מטלב עושה בפורמט "שימוש חוזר" .לדוגמא:
)rnd = rand(3,4
;'fmt = ' Col < %5.3f %5.1e %5.2f >\n
= rnd
)fprintf(fmt,rnd
0.0357
0.7922
0.1419
0.9572
> 0.80
Col < 0.957 4.9e-01
0.8491
0.9595
0.4218
0.4854
> 0.92
Col < 0.142 4.2e-01
0.9340
0.6557
0.9157
0.8003
> 0.66
Col < 0.792 9.6e-01
> 0.93
Col < 0.036 8.5e-01
קריאה ע"י פורמט
ניתן לקרוא רק משתנה אחד .אם כל הנתונים בקובץ מאותו סוג ,ניתן לקרוא מערך בפקודה אחת.
)A = fscanf(fID,format
הנתונים שנקראו מהקובץ נשמרים במשתנה .A
)A = fscanf(fileID, format, sA
ציון מספר האיברים (לכל היותר) לקריאה.
ציון הממדים של m :Aשורות n ,עמודות .אם n=Infאז קוראים עד סוף הקובץ.
)]A = fscanf(fileID, format, [m,n
במקרה שהפורמ ט כולל תווים מפורשים ,מטלב מחפש את התווים האלה בקובץ ,מדלג עליהם וממשיך לפענח את הקובץ לפי
השדה שאחרי התווים.
◄דוגמא :4הסקריפט d5write_ecologyמבצע את הדברים הבאים:
א .נותן למשתמש לבחור קובץ מתוך רשימת קבצי קבצי .LGDW*.mat
ב .מכין שם -קובץ זהה לקובץ הנתונים ,אבל עם סיומת .txt
ג .כותב לקובץ בשם זה שורת כותרת הכוללת ערכי פרמטרים של המערכת.
ד .בשורה הבאה כותב כותרות לזמן ולאוכלוסיית האנטילופות ,ובשורות הבאות את ערכי הזמן והאוכלוסיה.
◄דוגמא :5הסקריפט d5read_ecology
file: LDGW15.txt, Water supply: 4.02
מבצע את הדברים הבאים:
50
א .נותן למשתמש לבחור קובץ מתוך רשימת
45
קבצי .LDGW*.txt
ב .פותח את הקובץ לקריאה ,ומדלג על
40
השורה הראשונה.
35
ג .מן השורה השנייה ,מחלץ את ערך
lions
deer
grass
water
אספקת המים.
ד .מדלג על שתי השורות הבאות.
25
ה .משרטט גרף של כל האוכלוסיות ומוסיף
population
30
20
מקרא.
15
ו .מוסיף כותרת לגרף :שם הקובץ המקורי +
10
ערך אספקת המים.
5
100
עמ' 8מתוך 9
90
80
שיעור 5
70
60
50
time
40
30
20
10
0
אפריל 15
© אגף התקשוב ,אוניברסיטת בר אילן
ד"ר סמדר שץ
קורס תוכנת מטלב ויישומיה
קריאה וכתיבה לקבצים בינאריים
קובץ בינארי כולל ייצוג בינארי של נתונים מסוגים שונים ,באופן סדרתי.
בקריאה וכתיבה לקובץ בינארי קוראים בכל פעם נתונים מסוג מסוים .מספר הבתים שנקרא או נכתב עבור כל נתון תלוי בסוג הנתון.
להלן כמה סוגי נתונים ומספר הבתים הכתובים בקובץ לכל נתון:
מספר בתים
מספר בתים
סוג
סוג
4
int, int32
4
single,float
2
int16,integer*2
8
double,float64
1
int8
1
char*1
1
uint8
תלוי בקידוד
char
סוגים נוספים נמצאים בתיעוד על פקודות . fread,fwriteאם לא מציינים את הסוג בגוף הפקודה ,ברירת המחדל היא .uint8
בכתיבה וקריאה של מערך ,הנתונים נכנסים למערך לפי עמודות.
פקודות כתיבה
)fwrite(fID, A
כתיבת כל האיברים של Aלקובץ.
Aיכול להיות גם ביטוי (לא רק שם של משתנה).
ציון סוג הנתונים dType
דוגמא:
)fwrite(fID, A, dType
)'fwrite(fID,rand(5),'double
פקודות קריאה
)A = fread(fID
קריאת כל התוכן של הקובץ למערך-עמודה .A
)A = fread(fID,sA
ציון מספר הנתונים לקריאה.
)]A = fread(fID,[m,n
ציון ממדי המערך ( Aכמו בפקודת .)fscanf
ציון סוג הנתונים.
)A = fread(fID,[m,n],dType
עמ' 9מתוך 9
שיעור 5
אפריל 15
© Copyright 2025