Matris
Uppgift:
Du har matrisen:
A=[2 6 3 8 2; 6 6 7 7 3; 1 7 4 2 9; 0 4 5 6 3; 3 8 4 7 69]
Ta fram all rader i A där 4:e kolumnen är mindre än 7 och skapa en matris B som består av dessa raders värden minus 1.
A =
2 6 3 8 2
6 6 7 7 3
1 7 4 2 9
0 4 5 6 3
3 8 4 7 69
Lösning:
index = (A(:,4)<7); B=A(index, :) - 1
krångligt svar. Jag trodde om man lägger in index = (A(:,4)<7) i matrisen A så får man värde på de platserna som logiska arrayen visar. Alltså jag trodde att A(index) skulle ge 2 och 6 men jag hade fel! den ger 1 och 0 som är värdet av rad tre och fyra i kolumn 1.
Du kämpar på!
Nej, kolumn 1 är inte med.
Titta först på A(:,4) Detta plockar ut kolumn 4 ur A.
Nästa steg: (A:,4) < 7 ger dig en logisk kolumnvektor med 4 element där det sitter 1:or i de rader där värdet i kolumn 4 är <7:
>> A(:,4)<7
ans =
0
0
1
1
0
Nu har vi markerat raderna 3 och 4 med 1:or och kallar den logiska vektorn 'index'
Sista steget: B=A(index,:)-1 plockar ut de rader i A där 'index' är 1, dvs. där elementen i kolumn 4 är mindre än 7 och drar bort 1. Vi drar alltså bort 1 från rad 3 och 4.