תכנות נומרי עם Matlab ו-Octave/מערך תאים
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
הקדמה
בניית מערך תאים
עריכהדמיינו מטריצה שהאברים בה הם גם מחרוזות , גם מספרים וגם מטריצות או וקטורים.
מטריצה כזו נקראת מערך תאים.
מערכי תאים יכולים להכיל את כל סוגי המשתנים ואף מערכי תאים אחרים.
דגשים:
- פניה לתאים עם שימוש בסוגרים מסולסלים {}.
- לא ניתן לבצע פעולות מתמטיות בין התאים במערך.
נגדיר מערך תאים בגודל 3*3 עם שימוש בפונקציה cell
a=cell(3,3)
כדאי לדעת: יכולנו להשתמש בפרמטר אחד , זהו מערך ריבועי! |
עכשיו נפנה לתא במקום 2,2 ונכניס לתוכו וקטור. לתא במקום 3,3 נכניס מטריצה 2*2, לתא 1,2 נכניס מחרוזת ולתא 1,1 נכניס מספר .
octave:2> a{1,2}='yes';
octave:3> a{3,3}=ones(2);
octave:4> a{2,2}=[1 2 3 4];
octave:5> a{1,1}=180;
octave:6> a
a =
{
[1,1] = 180
[2,1] = [](0x0)
[3,1] = [](0x0)
[1,2] = yes
[2,2] =
1 2 3 4
[3,2] = [](0x0)
[1,3] = [](0x0)
[2,3] = [](0x0)
[3,3] =
1 1
1 1
}
שימו לב שיש תאים ריקים.
ניתן לבנות מערך תאים ללא שימוש בפקודה cell כך:
octave:9> b={eye(3),a,3;[0,0,1],'no','yes'}
b =
{
[1,1] =
1 0 0
0 1 0
0 0 1
[2,1] =
0 0 1
[1,2] =
{
[1,1] = 180
[2,1] = [](0x0)
[3,1] = [](0x0)
[1,2] = yes
[2,2] =
1 2 3 4
[3,2] = [](0x0)
[1,3] = [](0x0)
[2,3] = [](0x0)
[3,3] =
1 1
1 1
}
[2,2] = no
[1,3] = 3
[2,3] = yes
}
שימו לב שהכנסנו את המערך הקודם בתוך המערך .
עכשיו נברר מיהו b
octave:10> whos b
*** local user variables:
Prot Name Size Bytes Class
==== ==== ==== ===== =====
rwd b 2x3 184 cell
Total is 6 elements using 184 bytes
פניה לתאים במערך
עריכההפניה לתאים במערך מתבצעת עם סוגרים מסולסלים , לא כמו פניה לתאים במטריצות ווקטורים.
נפנה לתא 3,3 ו 1,1
octave:7> a{3,3}
ans =
1 1
1 1
octave:8> a{1,1}
ans = 180
מה יקרה אם נשתמש בסוגרים עגולות?
a(3,3)
במקרה הזה נקבל את מימדי תוכן התא , במקרה הזה 2*2.
שימו לב: האופציה הזו לא פועלת באוקטב |
פניה לתאים בתוך תאי המערך
עריכהנבנה תחילה מערך תאים ונפנה לתא במקום 1,2 :
octave:8> c={eye(3),magic(5),ones(3);[0,0,1],'no','yes'};
octave:9> c{1,2}
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
אם אנו רוצים לפנות לתא בתוך המטריצה נשתמש בסוגרים עגולות לאחר הפניה לתא במערך:
octave:10> c{1,2}(3,3)
ans = 13
פונקציות למערך תאים
עריכהcell
עריכהאתחול מערך תאים. דוגמא למעלה.
iscell
עריכהמחזירה 1 אם המשתנה הוא מערך תאים ו- 0 אם לא.
iscellstr
עריכהפונקציה לוגית שמחזירה 1 אם כל התאים במערך תאים (אותו הפונקציה מקבלת) מכילים מחרוזות ו-0 אם לא.
octave:24> c={'day','good';'no','yes'};
octave:25> iscellstr(c)
ans = 1
octave:26> c={'day','good';'no',6};
octave:27> iscellstr(c)
ans = 0
הפרק הקודם: רשומות |
מערך תאים | הפרק הבא: מטריצה דלילה |