Ci sono un po' di errori ne codice che hai scritto.
Quello principale è che hai scritto "elseif" senza specificare la condizione.
Se non hai una condizione specifica da testare devi usare semplicemente "else".
Corretto questo, dovresti aggiungere un contatore da usare come indice per accedere al vettore di output "v".
Il contatore va iniziato a 0 prima del ciclo for ed incrementato prima di di assegnare il valore al vettore
Se non usi il contatore, ma la variabile "i" come indice, scriverai nel vettore solo nelle posizioni corrispondenti al valorr di "i" per il quale è verificata la condizione per cui, alla fine, avrai alcuni elementi di "v" uguali a 0
Non c'è bisogno di incrementare la variabile indice del cicl0 (istruzione "i=i+1"), l'incremento viene fatto automaticamente
In pratica:
v= zeros(1,10);
% Inizializzazione del contatore
cnt=0;
for i=1:100;
x=randn(1);
if x<0.5;
i=i;
% elseif
else
cnt=cnt+1;
v(cnt)=x;
% i=i+1;
endif
%endfor
end
Considera che, usando le proprietà di indexing di MatLab, puoi ottenere lo stesso risultato senza usare un ciclo for:
x=randn(1,100)
x=x(x>=.5)