문제

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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top