4 svar
99 visningar
I am Me behöver inte mer hjälp
I am Me 720
Postad: 27 okt 2022 18:26 Redigerad: 27 okt 2022 18:28

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. 

Matsmats 571 – Livehjälpare
Postad: 27 okt 2022 18:48

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.

I am Me 720
Postad: 27 okt 2022 19:08

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. 

Matsmats 571 – Livehjälpare
Postad: 27 okt 2022 19:27

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)

I am Me 720
Postad: 27 okt 2022 20:04

Tack!!

Svara
Close