Sostituire ettere con numeri in una matrice

di il
1 risposte

Sostituire ettere con numeri in una matrice

Salve a tutti, ho un probema con matlab
devo sostituire tutte le lettere 'M' e 'B' di una matrice del tipo:

123 | 'B' | 24 | 12 |
123 | 'M' | 24 | 12 |
123 | 'B' | 24 | 12 |
con i numeri 1 per M e -1 per B. Notare che nelle celle ci sono anche gli apici, quindi ho una colonna con : 'B' e 'M'
devo sostituire tutta la colonna di 'B' e 'M' con -1 e 1 rispettvamente.

ho provato con il seguente codice e non funziona:
for i = 1:569
if strcmp(data2(i,2),"M")
data2(i,2) = 1;
end
if strcmp(data2(i,2),"B")
data2(i,2) = -1;
end
end
grazie per l'eventuale aiuto

1 Risposte

  • Re: Sostituire ettere con numeri in una matrice

    Assumendo che la matrice "data2" sia un cellarray (non si possono creare matrici - array) con numeri e lettere / stringhe, potresti provare:
    
    data2(strcmp(data2(:,2),'M'),2)=1
    data2(strcmp(data2(:,2),'B),2)=-1
    
    cercando direttamente in tutta la seconda colonna con l'operatore ":" senza la necessità di ciclik "for".
    La funzione "strcmp" in questo caso ritorna un vettore colonna di valori logici (1 / 0) a seconda che la condizione sia verificata o no.
    L'assegnazione dei valori viene effettuata solo nelle righe corrispondenti al valore 1 nel vettore colonna ritornato dalla funzione "strcmp"

    Attenzione: soluzione testata solo con Octave
Devi accedere o registrarti per scrivere nel forum
1 risposte