2009-11-30 3 views
0

for 루프가 실행될 때 acidic을 합친 다음 이전의 모든 산성 값의 총 값을 출력하고 싶습니다. 내 문제는 바로 지금은 산탄의 합계가 아닌 개별 값을 인쇄하는 것입니다. 어떻게 합쳐야합니까?Matlab의 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 
+0

을위한 루프 두 번 밖에 실행하여. 이게 니가 원하는거야? – John

+0

예. 나는 적은 횟수로 시작하고있다. Excel 파일을 가져 와서 여러 번 실행할 계획입니다. –

답변

4

편집 인쇄가되는 것입니다 - Donnie이 가리키고 있으므로 t 변수가 필요하지 않습니다.

sum(acidic) 줄에 세미콜론이 없으므로 MATLAB이 결과를 인쇄합니다. 그러나 산성은 스칼라이므로 다른 문제가있는 것처럼 보입니다. 따라서 값은 매번 덮어 쓰게됩니다.

pki = [7.7,3.9]; 
n = 55; 
acidic = log10(1./((n-1).*(10.^-pki))); 

disp(sum(acidic)) 

참고 ./, .*.^ 운영자 : 아마 당신이 그런 짓을하고 싶습니다. 이것들은 MATLAB이 벡터에 대해 요소 연산을 수행하도록합니다. 마지막 disp 줄은 출력 값을 출력하도록 MATLAB에 지시합니다.

6

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을 사용하는 것입니다. 한 번에 계산을 수행

pki = [7.7,3.9]; 
t= 2; 
n=55; 
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki))); 

sum(acidic) 

: 당신이 이런 식으로한다면 당신은 for 문을 필요가 없습니다. 당신은 항상 PKI을 모두 사용하지 않을한다면, 당신은과 같이, 그것으로 첨자 수 :이 작성한 것처럼

pki = [7.7,3.9]; 
t= 2; 
n=55; 
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t)))); 

sum(acidic) 
+0

t를 필요로하지 않는 것에 대한 좋은 지적. – mtrw