2016-12-20 7 views
-1

cputimeフィーチャーを使用して、各繰り返しでkmeansアルゴリズムによって得られたcputimeを測定しています。しかし、いくつかの反復がCPUTIME = 0を返すここに私の実装です:、0、0、0.046875、0、0、0、0、0、0.03125、0:kmeansとのMatlab cputimeが返る0

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,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

関連する問題