Eppure perchè dici così.
Se io scrivo così
for i=1:p
B=[0 0 0]';
E=[0 0 0]';
y0(i,:) = [Part_trasp(i).traiettoria(end,:),Part_trasp(i).velocita(end,:)];
%%%Risolvo il moto
f = @(t,y1) [y1(4:6); (q_over_m).*cross(y1(4:6),B)+(q_over_m).*E];
options=odeset('RelTol',1e-7,'Events',@(t,y)Event_Stop_1(t,y,Deriva1));
[t,y1] = ode23t(f,tspan,y0(i,:),options);
Part_trasp(i).traiettoria(end+1:end+size(y1,1),1:3)=y1(:,1:3);
Part_trasp(i).velocita(end+1:end+size(y1,1),1:3)=y1(:,4:6);
end
%%
%Zona 2
%calcolo la traiettoria nella parte in cui c'è solo il campo magnetico
for i=1:p
B2=[0.003 0 0]';
E2=[0 0 0]';
y0(i,:) = [Part_trasp(i).traiettoria(end,:),Part_trasp(i).velocita(end,:)];
%%%Risolvo il moto
f = @(t,y2) [y2(4:6); (q_over_m).*cross(y2(4:6),B2)+(q_over_m).*E2];
options=odeset('RelTol',1e-7,'Events',@(t,y)Event_Stop_2(t,y,inizioE));
[t,y2] = ode23t(f,tspan,y0(i,:),options);
Part_trasp(i).traiettoria(end+1:end+size(y2,1),1:3)=y2(:,1:3);
Part_trasp(i).velocita(end+1:end+size(y2,1),1:3)=y2(:,4:6);
end
Lui entra nel secondo ciclo, si crea la matrice delle condizioni iniziali (una riga per particella) e risolve.
uso un solo ciclo lui che fa?
risolve la prima equazione per i-esima particella, aggiorna la struttura Particella(i) e poi entra nella seconda zona e fa:
y0(i,:) = y0(i,:) = [Part_trasp(i).traiettoria(end,:),Part_trasp(i).velocita(end,:)];
ma solo per l'iesima particella, non per tutte, quindi dovrebbe creare un vettore riga per le condizioni iniziali che usa per risolvere l'altra equazione... o no?