Hai letto la documentazione relativa alla funzione "rem"?
La funzione ritorna il resto della divisione tra i due numeri (o vettori) in input.
Se usi come primo parametro il vettore con i numeri e come secondo il valore "2" otterrai in output un vettore di "0" e "1" in corrispondenza, rispettivamente, dei numeri pari e dispari, presenti nel vettore.
Se converti questi vettori da "double" a "logical" (con la funzione "logical"), puoi usarlo per estrarre direttamente i valori pari e dispari:
Una possibile implementazione, che sfrutti anche le proprietà di indexing di MatLab (che, molto spesso consentono di evitare la scrittura di "cicli for") potrebbe essere:
% Creazione di un vettore di esempio
v=randi(33,1,10)
% Estreazione dei numeri pari
numeri_pari_rem=v(~logical(rem(v,2)))
% Estreazione dei numeri dispari
numeri_dispari_rem=v(logical(rem(v,2)))
che produce, ad esempio (il risultato cambia in base ai valori random del vettore "v")
v =
28 9 27 9 31 12 7 9 21 16
numeri_pari_rem =
28 12 16
numeri_dispari_rem =
9 27 9 31 7 9 21
Per qualche dettaglio sulle proprietà di indexing:
https://it.mathworks.com/help/matlab/learn_matlab/array-indexing.html
https://it.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html
https://it.mathworks.com/help/matlab/math/matrix-indexing.html