문제
for 루프가 실행되는 것처럼 산성을 합산 한 다음 이전의 모든 산성 값의 총 값을 인쇄하고 싶습니다. 내 문제는 지금 당장 산성의 합산 값이 아닌 개별 값을 인쇄하고 있다는 것입니다. 어떻게 요약합니까?
이것이 명령 창에 인쇄하는 것입니다
ans =
5.9676
ans =
2.1676
여기 내 코드가 있습니다
pki = [7.7,3.9];
t= 2;
n=55;
for i = 1:t;
acidic = log10(1/((n-1)*(10^-pki(i))));
sum(acidic)
end
해결책
편집하다 - 처럼 도니 지적, 당신은 필요하지 않습니다 t
변하기 쉬운.
당신은 당신의 라인에 세미콜론이 없습니다 sum(acidic)
, 그래서 Matlab은 결과를 인쇄합니다. 그러나 다른 문제가있는 것처럼 보입니다. 산성은 스칼라이므로 매번 값을 덮어 쓰고 있습니다. 아마도 당신은 다음과 같은 일을하고 싶을 것입니다.
pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));
disp(sum(acidic))
참고 ./
, .*
, 그리고 .^
운영자. 이들은 Matlab에게 벡터를 통해 요소 작업을 통해 요소를 수행하도록 지시합니다. 마지막 disp
라인은 MATLAB에 출력 값을 인쇄하도록 지시합니다.
다른 팁
sum()
벡터의 모든 값 또는 행렬의 축을 따라 모든 값을 합산하는 것입니다. 코드를 구현하는 방식으로 필요하지 않습니다. 당신은 그냥 할 수 있습니다
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
그러나 그것은 상당히 비효율적 인 matlab입니다. 내가 추천하는 것은 한 번에 모든 값을 계산 한 다음 사용하는 것입니다. sum
. 당신은 필요하지 않습니다 for
이렇게하면 진술 :
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));
sum(acidic)
한 번에 계산을합니다. 당신이 항상 모든 PKI를 사용하지 않을 것이라면, 당신은 다음과 같이 구독 할 수 있습니다.
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));
sum(acidic)
제휴하지 않습니다 StackOverflow