Matris
uppgift:
X = [1 1 1 1; 2 4 8 16; 3 9 27 81; 4 16 64 256; 5 25 125 625; 6 36 216 1296]
Matrisen ovan beskriver talen 1-6 upphöjt i 1-4, där raderna beskriver talen 1-6 och kolumnerna är talen i olika upphöjt. Tex på rad 3 står talen 3^1, 3^2, 3^3 och 3^4.
b) Nu skall du plocka ut alla tal som är mellan 15-100 och skriva ut dom i ordning från minsta till största.
Svar:
index = X > 15 & X < 100
disp(sort(X(index)))
Mitt svar:
Jag hade skrivit index= 15 < X(: , :) <100 , alltså alla rader och alla kolumner där X är större än 15 och mindre än 100.
Varför det jag har skrivit är fel?? Det ger en logisk matris där alla rader och kolumner är 1.
Visste inte ens att man kunde skriva som du gjorde, men jag tror att det du får är:
(15<X)<100
Eftersom 15<X är en logisk matris med elementen 0 eller 1 så kommer alla dess element vara mindre än 100 och därför blir det som du beskriver.
Testa t.ex. 100<X<1 och (100<X)<1, de ger båda två samma svar och det stöder min tolkning tror jag.
(100<X är en logisk matris med 1:or där X<100).
De två 'mindre än'-tecknen har samma prioritet och därför räknar MATLAB ut det vänstra 100<X ut först.
Hahahah jag tolkade det bokstavligt.
Aha okej! Men i index = X > 15 & X < 100 man säger inget om rader och kolumner. Utan bara alla X som är större än 15 och alla X som är mindre än 100.
Du får två logiska matriser, X>15 och X<100 som du gör logiskt AND på i det fallet.
"Mindre än" och "större än" har högre prioritet än & så därför görs de först.
Vill man vara tydlig sätter man parenteser så syns det bättre:
index = (X > 15) & (X < 100)
Tack!!