Fluidodinamica [Matlab]

ivans1984
Salvea tutti

volevo esporre una semplice questione sul linguaggio Matlab

il seguente codice serve per risolvere le equazioni Shellow Water (un'approssimazione
delle Navier Stokes)

Il vettore che rappresenta l'elevazione della superficie è eta(j,n)

j è l'indice spaziale
n quello temporale

nel codice c'è il comando plot, però, per come ho scritto il codice,
nello stesso plot ci sono sovrapposti tutti i grafici per tutti i valori
di n.
Vorrei invece che per ogni n venisse visualizzato solo un grafico, ovvero
che per ogni n, viene cancellato il grafico precedente e plottato il
grafico per il valore corrente di n. Come posso fare?


grazie

qui c'è il codice
---------------------------------------------------
Nspace=50;
Ntime=20;
H=2;
dx=1;
dt=0.1;

%condizione iniziale
for j=1:Nspace
n=1;
if ( j>Nspace*0.4) & (j
eta(j,n)=0.1;

else

eta(j,n)=0;

end

u(j,n)=0;
end

disp('condizione iniziale')
for k=1:Nspace

disp([k , eta(k)])


end


%plot condizione iniziale
plot(eta)

%loop temporale
for n=1:Ntime

%loop spaziale
for j=2:Nspace-1
%FTCS+lax
u(j,n+1)=0.5*(u(j+1,n)+u(j-1,n))-(0.5*9.8*dt/dx)*(eta(j+1,n)-eta(j-1,n));
eta(j,n+1)=0.5*(eta(j+1,n)+eta(j-1,n))-(0.5*H*dt/dx)*(u(j+1,n)-u(j-1,n));

end
clc
plot(eta);

u(j,n)=u(j,n+1)
eta(j,n)=eta(j,n+1)
end

Risposte
ivans1984
riuppo la discussione

ho provato ad usare il comando "figure"

e mi crea tanti grafici (se Ntime=20 crea 20 grafici) ognuno

dei quali con il grafico del vettore del valore corrente di n, ma
sovrapposto a quelli precedenti

l'ideale per me sarebbe riuscire a plottare y = eta(j,n) (j=1,Nspace)
per ogni valore di n, ovvero

per n=1 plot di y = eta(j,1) (j=1,Nspace)
per n=2 cancellare il plot di n=1 e plottare y = eta(j,2) (j=1,Nspace)
eccetera

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.