Att ta ut delmatriser och att skapa
matriser från delar
Att ta ut delar med
indexvektorer
Logiska vektorer som index
Att skapa matriser
från delar
Att ta ut delar med
indexvektorer
>> v = 0.1 +
(1:7) % skapa lite data
v =
1.1 2.1
3.1 4.1 5.1
6.1 7.1
>>
v(2:4)
% tag ut element 2 till och med 4
ans =
2.1 3.1 4.1
>> v(1:3:7) % tag ut en
delvektor, 1:3:7 = [1 4 7]
ans =
1.1 4.1 7.1
>> M = magic(5)
% skapa lite data
M =
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
>> M(:,
2) % tag ut
andra kolonnen
ans =
24
5
6
12
18
>> M(3,
:) % tredje
raden
ans =
4 6
13 20 22
>> M([2 5], :) % bilda en
matris av 2:a och 5-e raderna
ans =
23 5
7 14 16
11 18
25 2 9
>> M([2 5], [2 4]) %
2 x 2-matrisen [M(2, 2), M(2,
4); M(5, 2), M(5, 4)]
ans =
5 14
18 2
>> M(:,
end) % sista kolonnen
(end måste stå som index)
ans =
15
16
22
3
9
>> M(end,
:) % sista raden
ans =
11 18 25
2 9
>> M(end,
end) % elementet i sista raden och
kolonnen
ans =
9
>> M([1 3],
[end-3:end]) % lite
svårare
ans =
24 1
8 15
6 13 20 22
>> M(:,
end:-1:1) %
permutation av kolonnerna
ans =
15 8
1 24 17
16 14
7 5 23
22 20 13
6 4
3 21 19
12 10
9 2 25
18 11
>> M([1 3], [2 4]) = 100 %
man kan göra tilldelningar
också
M =
17 100
1 100 15
23 5
7 14 16
4 100
13 100 22
10 12
19 21 3
11 18
25 2 9
>> M([1 3], [2 4]) = 100 * [1 2; 3 4]
M =
17 100
1 200 15
23 5
7 14 16
4 300
13 400 22
10 12
19 21 3
11 18
25 2 9
Logiska vektorer som index
>> v = 0.1 + (1:7) %
skapa lite data
v =
1.1 2.1 3.1
4.1 5.1 6.1 7.1
>> v >
4 % 0
= falskt, 1 = sant
ans =
0 0
0 1
1 1 1
>> v(v >
4) % tag ut de
värden som svarar mot sant
ans =
4.1 5.1 6.1 7.1
>> v([0 0 0 1 1 1 1])
% fel datatyp
??? Subscript indices must either
be real positive
integers or
logicals.
>> v(logical([0 0 0 1 1 1
1])) % konvertera till typen
logical
ans =
4.1 5.1 6.1 7.1
>> v(2 < v & v <
5) % värden större
än 2 och mindre än 5
ans =
2.1 3.1 4.1
>> v(v <= 2.1 | 6 <=
v) % mindre lika med 2.1 eller
större lika med 6
ans =
1.1 2.1 6.1 7.1
>> sum(v ~=
3.1) % == likhet,
~= skild från
ans
=
6
>> any(v ~=
3.1) % något
värde skilt från 3.1
ans =
1
>> all(v ~=
3.1) % alla skilda
från
ans =
0
>> all(v ~= 3.5)
ans =
1
>> find(v >
4) %
find returnerar index i stället
för 0, 1
ans =
4 5
6 7
Att skapa matriser från
delar
Man skriver ungefär som när man skapar matriser av tal. Komma
eller blank för at byta kolonn och ; för att byta rad.
Här föjer några exempel. När man sätter ihop
matriser i rader (kolonner) måste delarna pasa ihop
storleksmässigt.
>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = [5 6; 7 8]
B =
5 6
7 8
>> C = [A, B]
C =
1 2
5 6
3 4
7 8
>> C = [A; B]
C =
1 2
3 4
5 6
7 8
>> C = [A, B'; A-B,
A']
C =
1 2
5 7
3 4
6 8
-4 -4
1 3
-4 -4
2 4
>> C = [A, [-1; 2]; [3 5 1]]
C =
1 2 -1
3 4 2
3 5 1
