2016-12-20 1 views
-1

나는 cputime 기능을 사용하여 kmeans 알고리즘이 가져 오는 cputime을 각 반복마다 측정합니다. 그러나 일부 반복 반환 CPUTIME = 0 여기 내 구현의 :kmeans가있는 Matlab cputime이 반환됩니다.

load fisheriris; 
    [~,C] = kmeans(meas, 3, 'options',statset('MaxIter', 1),'Display', 'off'); 
    results=[]; 
    for i = 1:15 
      t=cputime; 
      [~,C] = kmeans(meas, 3, 'options',statset('MaxIter', 1),'Start',C, 'Display', 'off'); 
      elapsedCPUTime=cputime-t; 
      results=[results;elapsedCPUTime]; 
    end 

이 내가 15 반복에 대한 얻은 결과입니다 : 0, 0, 0.046875, 0, 0, 0, 0, 0, 0.03125, 0, 0, 0, 0, 0, 0.03125. 저의 첫 번째 생각은 계산 시간이 너무 빠르기 때문에 0 초입니다. 사실입니까? 그렇다면 어떻게하면보다 정확한 통계를 얻을 수 있습니까?

고마워요. documentation에서

답변

1

:

성능을 측정하기 위해, 당신이 timeit 또는 틱 및 TOC 기능을 사용하는 것이 좋습니다. 자세한 내용은 Using tic and toc Versus the cputime Function을 참조하십시오.

타임 코드의 상당 충분한 부분 : 그 링크를

. 이상적으로, 타이밍을 정하는 코드는 실행하는데 1/10 초 이상 걸립니다.

kmeans을 반복하여 실행 해보십시오. 내가 ii에 변경 이유입니다, unexpected results를 얻을 수있는 루프 변수로 i를 사용

load fisheriris; 
[~,C] = kmeans(meas, 3, 'options',statset('MaxIter', 1),'Display', 'off'); 
results=[]; 
for ii = 1:15 
     t=cputime; 
     for k = 1:100 
      [~,Ctemp] = kmeans(meas, 3, 'options',statset('MaxIter', 1),'Start',C, 'Display', 'off'); 
     end 
     elapsedCPUTime=(cputime-t)/100; 
     C = Ctemp; 
     results=[results;elapsedCPUTime]; 
end 

.

+0

벽 시계 시간과 CPU 시간을 모두 측정하고 싶습니다. – Foo

+0

@PhuLai 편집을 참조하십시오. – dasdingonesin