Non è necessario usare un ciclo "for", puoi sfruttare le proprietà di indexing di MatLab congiuntamente con la funzione
find
Dal momento che i valori di soglia sono "reali", meglio considerare un intervallo ristretto al loro intorno.
In questo caso, la funzione "find" ritorna l'indice delle righe nelle quali è verificata la condizione per al quale il valore della quarta colonna è compreso nell'intervallo attorno al valore di soglia.
Attenzione, il nome che hai dato alla matrice (input) è il nome di una funzione di MatLab (
input); MatLab ti consente di usarlo come nome di una variabile, ma se lo fai non riconoscerà più la funzione.
Nel codice che segue ho rinominato la matrice di input "in".
A=in(find(in(:,4) > .79 & in(:,4) < .81),:)
B=in(find(in(:,4) > .89 & in(:,4) < .91),:)
C=in(find(in(:,4) > .99 & in(:,4) < 1.1),:)
Se proprio vuoi usare un ciclo "for":, il codice non è molto diverso:
A=[];
B=[];
C=[];
for i=1:size(in,1)
if(in(i,4) > .79 & in(i,4) < .81)
A=[A;in(i,:)];
elseif(in(i,4) > .89 & in(i,4) < .91)
B=[B;in(i,:)];
elseif(in(i,4) > .99 & in(i,4) < 1.1)
C=[C;in(i,:)];
else
disp([num2str(in(i,4)) ': error'])
end
end