Come si sommano i valori all'interno di un ciclo for in Matlab?
Domanda
Voglio sommare l'acido mentre viene eseguito il ciclo for e quindi stampare il valore totale di tutti i precedenti valori acidi. Il mio problema è in questo momento è che attualmente sta solo stampando i singoli valori e non un valore sommato di acido. Come posso riassumere.
questo è ciò che sta stampando nella finestra di comando
ans =
5.9676
ans =
2.1676
ecco il mio codice
pki = [7.7,3.9];
t= 2;
n=55;
for i = 1:t;
acidic = log10(1/((n-1)*(10^-pki(i))));
sum(acidic)
end
Soluzione
MODIFICA - Come Donnie sottolinea, non è necessaria la variabile t
.
Non hai un punto e virgola sulla riga sum (acidic)
, quindi MATLAB stampa il risultato. Ma sembra che tu abbia altri problemi: l'acido è uno scalare, quindi il valore viene sovrascritto ogni volta. Probabilmente vuoi fare qualcosa del tipo:
pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));
disp(sum(acidic))
Nota gli operatori ./
, . *
e . ^
. Questi dicono a MATLAB di eseguire operazioni elemento per elemento sui vettori. L'ultima riga disp
dice a MATLAB di stampare il valore di output.
Altri suggerimenti
sum ()
serve per sommare tutti i valori in un vettore o lungo un asse in una matrice. Non è necessario con il modo in cui è stato implementato il codice. Potresti semplicemente fare
pki = [7.7,3.9];
t= 2;
n=55;
acidic = 0;
for i = 1:t;
acidic = acidic + log10(1/((n-1)*(10^-pki(i))));
end;
acidic
Tuttavia, questo è abbastanza inefficace matlab. Quello che consiglierei di fare è semplicemente calcolare tutti i valori contemporaneamente, quindi utilizzare sum
. Non hai bisogno dell'istruzione for
se lo fai in questo modo:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));
sum(acidic)
Che fa il calcolo in una volta sola. Se non avessi sempre usato tutto il pki, potresti iscriverti ad esso, in questo modo:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));
sum(acidic)