| 
  
  
    
      
        
        
          
            
              | 
              このページについて | 
             
            
              
                
                  
                    
                      
                        
このページまで辿り着いた人は、おそらく、大学の卒論で「ゆらぎ」をテーマにしている、研究テーマに選んだなど、特殊な人だと思います。 
ゆらぎ解析君は、もともと研究目的に作られたものではないのですが、けっこうな頻度で、得点算出方法について質問を受けます。 
下記で式の意味について、少し説明していますが、もし、論文などを書くのであれば、解析結果の素のデータを利用して、自分で方法を考えて解析結果についての評価を行なうということも有用かもしれません。そのために、解析結果の素のデータを出力する機能を用意しています。 | 
                       
                      
                        | 
  
  | 
                       
                      
                        | 
下記で行なっている式の説明は、実際をプログラムを書いてから、すくなくとも1年以上あとに思い出しながら、書いていますから、不正確である可能性があります。もし、読んでみて納得できない点があれば、説明のほうが間違っている可能性があります。その場合は、問い合わせてください。 | 
                       
                    
                   
                 
               | 
             
          
         
        
       
     | 
  
  
     | 
  
  
    
      
        
        
          
            
              | 
              式の意味 | 
             
            
              
                
                  
                    
                      
                        
for(i = 0; i < NumSamples/2; i++)  
{ 
    double factor = cos(asin((double)i*2.0 * sample_facutor /(NumSamples/2))); 
    guide_data[i] = factor*100.0; 
} 
  | 
                       
                      
                        
上記は、C++のソースコードです。精度を保つために、できるだけdoubleを使用した計算を行なっています。
  
    | 
    NumSamples | 
    
    解析を行なうためのサンプル数が入っている変数です。FFTでは、サンプル数として使用した数の半分の数だけ、結果を取得できるため、インデックスの0から初めて、NumSamples/2を上限に、各解析結果に対するガイドラインの値をループで計算しているわけです。 | 
   
  
    | 
    factor | 
    
    各解析結果(各周波数)に対するガイドラインの元の値が入ります。小さすぎるので、あとで、100倍しています。 | 
   
  
    | 
    sample_facutor | 
    
    
      
        
        下記のように決めています。そのままの計算を行なうと、選択しているサンプル数に比例して、計算結果の値の大きさが異なるため、この値を利用して均しているのだと思います。(詳しくは忘れました。この変数を使用せずに、計算を行なってみると、なぜなのか思い出すと思いますが、面倒なので、このあたりまでにしておきます。) 
        このページにある情報で、Excelのグラフ機能などで、実際にガイドラインの曲線が描けると思うので、興味のある人はやってみてください。 | 
       
      
        
        double sample_facutor = 1.0; 
        switch(NumSamples) 
        { 
    case 2048: 
        sample_facutor = 1.0; 
        break; 
    case 4096: 
        sample_facutor = 2.0; 
        break; 
    case 4096*2: 
        sample_facutor = 4.0; 
        break; 
        } | 
       
     
     | 
   
  
    | 
    guide_data | 
    
    各解析結果に対するガイドラインの値が入ります。このガイドラインに入っている値をプロットしていくと、ガイドラインの曲線を描くことができます。 | 
   
 
                         | 
                       
                    
                   
                 
               | 
             
          
         
        
       
     | 
  
  
    |   | 
  
  
    
      
        
        
          
            
              | 
              式の目的 | 
             
            
              
                
                  
                    
                      
                        | 
解析の手法上、どのような曲でも、周波数の一番低いところと高いところで、歪ができてしまいます。そのため、まっすぐ45度のラインで判定すると、周波数の一番低いところと高いところの影響が大きくでてしまいます。また、どのような曲でも、まっすぐ45度のラインにはならず、グラフの真ん中あたりが少し上に膨らむ形になります。このため、実際の解析結果を何曲か調べ、この部分の影響を少なくするために、考案した曲線です。 | 
                       
                    
                   
                 
               | 
             
          
         
        
       
     | 
  
  
     |