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 
È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top