3 svar
124 visningar
I am Me 720
Postad: 30 okt 2022 22:08

Var och när använder man [], () , ; och , samt : i matlab ?

Utgå från matrisen

A = [4 3 5 7 4 1 5; 2 3 5 3 7 5 4; 2 4 3 5 7 8 6; 1 5 8 5 3 6 9; 2 4 2 7 6 8 2; 1 4 2 7 9 6 4; 2 4 6 7 8 5 1]
Hur skriver du för att få en ny matris B som innehåller kolumnerna 3, 4 och 1 från A, i den ordningen? Alltså, vad ska svar1 och svar2 vara i nedanstående uttryck? B = A(svar1, svar2)

Hur skriver du för att skapa en ny matris C som innehåller alla rader i A där värdet i kolumn 2 är större än värdet i kolumn 7? Alltså, vad ska svar3 och svar4 vara i nedanstående uttryck? C = A(svar3, svar4)


A =

4    3    5    7    4    1     5
2    3    5    3    7     5    4
2    4    3    5    7    8     6
1    5    8    5    3    6    9
2    4    2    7     6    8    2
1   4     2    7     9    6    4
2   4    6    7     8     5    1

Min lösning:

Det här är ett exempelprov och jag fick fel på alla uppgifter =((((

För första frågan B = A(svar1, svar2)  svaret blir B= A(:, [3 4 1]) . DEt står att man kan även skriva det som [ 341] , [3,4,1] , [3;4; 1] varför dessa är rätt?? det ger en vektor av raderna, [3,4,1]  ger en rad vektor och [3;4; 1] ger en matrix av kolumnerna. Varför använder de hakparentes här??:(

 

Svaret för andra frågan är C= A( A(:, 2) > A(:, 7),  (1:7)). 
jag skrev den här A(:, 2) > A(:, 7) i matlab och fick en logisk array. Såg att värdet i rad 5 och 7 i kolumn två var större än värdet i kolumn sju. Därför skrev jag C= A((5,:), (7,:)). Matlab säger att det är fel användning av parantes. Varför min svar är fel?? 

I am Me 720
Postad: 31 okt 2022 05:18
I am Me skrev:

Utgå från matrisen

A = [4 3 5 7 4 1 5; 2 3 5 3 7 5 4; 2 4 3 5 7 8 6; 1 5 8 5 3 6 9; 2 4 2 7 6 8 2; 1 4 2 7 9 6 4; 2 4 6 7 8 5 1]
Hur skriver du för att få en ny matris B som innehåller kolumnerna 3, 4 och 1 från A, i den ordningen? Alltså, vad ska svar1 och svar2 vara i nedanstående uttryck? B = A(svar1, svar2)

Hur skriver du för att skapa en ny matris C som innehåller alla rader i A där värdet i kolumn 2 är större än värdet i kolumn 7? Alltså, vad ska svar3 och svar4 vara i nedanstående uttryck? C = A(svar3, svar4)


A =

4    3    5    7    4    1     5
2    3    5    3    7     5    4
2    4    3    5    7    8     6
1    5    8    5    3    6    9
2    4    2    7     6    8    2
1   4     2    7     9    6    4
2   4    6    7     8     5    1

Min lösning:

Det här är ett exempelprov och jag fick fel på alla uppgifter =((((

För första frågan B = A(svar1, svar2)  svaret blir B= A(:, [3 4 1]) . DEt står att man kan även skriva det som [ 341] , [3,4,1] , [3;4; 1] varför dessa är rätt?? det ger en vektor av raderna, [3,4,1]  ger en rad vektor och [3;4; 1] ger en matrix av kolumnerna. Varför använder de hakparentes här??:(

 

Svaret för andra frågan är C= A( A(:, 2) > A(:, 7),  (1:7)). 
jag skrev den här A(:, 2) > A(:, 7) i matlab och fick en logisk array. Såg att värdet i rad 5 och 7 i kolumn två var större än värdet i kolumn sju. Därför skrev jag C= A((5,:), (7,:)). Matlab säger att det är fel användning av parantes. Varför min svar är fel?? 

Hittade att någon i en av mina tidigare tråd hade skrivit skillnaden mellan [],()  och : , det löste sig och jag kan inte ändra den här tråden. 

Men är [3 4  1] en rad eller kolumn vektorn som man skickade in i B= A(:, [3 4 1]) ??

Matsmats 571 – Livehjälpare
Postad: 31 okt 2022 05:58

[3 4 1] är en radvektor. Dock får du samma resultat med B=A(:,[3 4 1]'), dvs. med en kolumnvektor. Jag tror MATLAB vid indexering bara bryr sig om ordningen indexen kommer i, inte huruvida det är en rad- eller kolumnvektor.

I am Me 720
Postad: 31 okt 2022 06:27 Redigerad: 31 okt 2022 06:27

Tack tack! jag tror nu har jag förstått principen. 

Svara
Close