|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jun 2012
Messaggi: 6
|
Aiuto Matlab: sottomatrici
Ciao a tutti!
Ho una matrice con diverse colonne, e con diversi valori: es. 1.16 -0.656 -1.526 1.16 1.2 -1.74 -0.671 1.2 1.24 -0.336 0.717 1.24 1.28 -0.412 9.153 1.28 1.32 1.358 0.656 1.32 1.36 -0.137 -0.153 1.36 6.4 0.778 -0.992 1.4 1.44 -1.175 -0.626 1.44 1.48 -0.732 0.305 1.48 1.52 -1.175 -1.175 1.52 1.56 2.824 1.297 1.56 1.6 -0.732 0.305 7.6 1.64 0.153 0.61 5.64 1.68 0.336 1.205 1.68 1.72 0.9 1.099 1.72 Per ogni colonna vorrei definire una sottomatrice che comprenda i 3 valori che precedono il valore massimo, il valore massimo ed i 3 valori successivi. Questo per ogni colonna. Nell'esempio, quindi, la sottomatrice dovrebbe restituirmi: 1.28 -1.175 -1.526 1.48 1.32 -0.732 -0.671 1.52 1.36 -1.175 0.717 1.56 6.4 2.824 9.153 7.6 1.44 -0.732 0.656 5.64 1.48 0.153 -0.153 1.68 1.52 0.336 -0.992 1.72 Si può fare? Ale |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Jun 2012
Messaggi: 6
|
Mi spiace ma non mi funziona il ciclo for. Mi appare:
Expression or statement is incorrect--possibly unbalanced (, {, or [. E fa riferimento alla riga: [~, max_idx] = max( input_matrix(:,ii) ) Why? A. |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jun 2012
Messaggi: 6
|
Purtroppo stesso errore...
al posto di input_matrix ho scritto il nome della mia matrice, quindi [n_rows, n_cols] = size( a1 ); output_matrix = zeros(3+1+3,n_cols); for ii=1:n_cols [~, max_idx] = max( a1(:,ii) ); e così via. In realtà l'errore che mi da è lo stesso, per la stessa riga... ??? Error: File: provaa.m Line: 13 (corrisponde a: [~, max_idx] = max( a1(:,ii) );) Column: 3 Expression or statement is incorrect--possibly unbalanced (, {, or [. Ma cosa serve la linea [~, max_idx] = max( a1(:,ii) );? Non si può scrivere diversamente? Io ho Matlab2008b, potrebbe essere un problema legato alla versione? Grazie Antonio. Ale ADDENDUM Ho fatto una prova. Ho inserito la matrice: 2 20 60 3 30 90 4 40 120 5 120 150 6 60 480 70 70 210 8 80 240 9 90 270 10 100 300 e sostituito la riga [~, max_idx] = max( input_matrix(:,ii) ); con max_idx = max( a1(:,ii) ); Risultato: output matrix: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...? Ultima modifica di dindog : 14-06-2012 alle 12:21. |
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Jun 2012
Messaggi: 6
|
Perfetto, grazie!
Ale |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:20.