La scrittura del loop dipende molto da come è definita la tua funzione ("myFuntion"): che input richiede? Che output genera?
Al limite, potrebbe anche non essere necessario un loop.
Potresti pubblicare la funzione?
Una possibile soluzione potrebbe essere:
% Lettura file di input
x=dlmread('mySerie.txt');
% Identificazione numero elementi
n=length(x);
% Definizione dei limiti per l'estrazione dei dati
% ==> dagli ultimi 350 agli ultimi 750
n_punti=[350 750];
% Inizializzazione dell'indice del vettore risultati
cnt=0;
% Loop sulle sezioni di dati
%
for i=n_punti(1):n_punti(2)
% Incremento dell'indice
cnt=cnt+1
% Invocazione della funzione e salvataggio del risultato in un vettore
ret_val(cnt)=myFunction(x(n-i+1:end))
end
plot(ret_val)
grid on
Con riferimento all'esempio che hai scritto (
partendo dagli ultimi 350 punti (651:1000) applico la funzione e ottengo un risultato, poi stessa cosa ma sui dati da 650:1000, poi sui dati da 649:1000 e così via fino ad arrivare all'ultima iterazione sulla finestra di dati da 251:1000:
[*] nel vettore n_punti vengono definiti i limiti dei punti delle sezioni che vuoi estrarre
[*] il loop cicla nell'intervallo definito da "n_punti" con passo 1
[*] nel loop alla variabile "n" (numero di punti totale) viene, di volta in volta, sottratto il valore dell'indice del loop (+1)
in questo modo, per esempio, alla prima iterazione:
i=350
n=1000
==> n -i+1 ==> 1000-350+1 ==> 651
di conseguenza, l'istruzione "x(n-i+1:end)" significa: ... gli elementi del vettore x "a partire da "n-i+1" "fino a" (:) "l'ultimo (end).
Come scritto all'inizio, questa è solo una delle tante possibilità.
Se pubblicassi la funzione,
forse si potrebbe scrivere qualcosa di meglio.
Hope this helps.