CREAZIONE DI SOTTOMATRICE A PARTIRE DA UNA MATRICE, IN BASE A CERTI VALORI DI UNA COLONNA

di Anonimizzato9850 il
4 risposte
Buongiorno a tutti. il problema è il seguente. ho una matrice come questa:
A =

0 3 2
1 6 2
2 9 2
1 5 3
2 6 3
3 3 3
4 3 1
5 4 1
qual'è il modo più semplice per ottenere una matrice B contenente solo le righe della matrice A che hanno valore 3 nella terza colonna?
GRAZIE IN ANTICIPO A TUTTI.

4 Risposte

  • ceko87 ha scritto:


    Buongiorno a tutti. il problema è il seguente. ho una matrice come questa:
    A =

    0 3 2
    1 6 2
    2 9 2
    1 5 3
    2 6 3
    3 3 3
    4 3 1
    5 4 1
    qual'è il modo più semplice per ottenere una matrice B contenente solo le righe della matrice A che hanno valore 3 nella terza colonna?
    GRAZIE IN ANTICIPO A TUTTI.
    Con un banale ciclo for ed un if.

    Il ciclo for deve scorrere tutte le righe. Il numero delle righe di A le ottieni attraverso la chiamata size(A,1);. Nel ciclo fai un if che controlla che alla riga i-esima l'ultimo elemento sia 3, in caso positivo copi l'intera riga in una nuova matrice B, altrimenti vai alla riga successiva. Una volta che hai letto tutte le righe, ti ritroverai in B tutte quelle che hanno il valore 3 nell'ultima colonna.
  • Grazie mille! tutto perfetto!
  • Ciao,

    nel caso dovessi gestire matrici di dimensioni maggiori, puoi considerare anche questo sistema:
    B = A(A(:,3)==3,:);
    o, più in generale:
     val = 3; col = 3;
     B = A(A(:,col)==val,:);
  • Perfetto grazie mille. gentilissimi. avevo pensato a una soluzione con il find. questa è più efficiente dal punto di vista del numero di comandi utilizzati. grazie a tutti!
Devi accedere o registrarti per scrivere nel forum
4 risposte