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