2017-04-09 1 views
-1

私は4つの方程式を最初にjavascriptで実装し、後で実行します。私の問題は、私は数学者ではない、私は方程式を読む方法を知らない。JavaScriptから方程式に来る方法

最初はFFTウィンドウBlackmanです。

enter image description here

第二には、FFTアルゴリズムです:

enter image description here

第三には、時間をかけて平滑化されています

enter image description here

は、第四デシベルすることです:

enter image description here

私はこの仕事にfftライブラリを使用できません。この4つの式を実装する必要があります。作業が完了すると、私は同じシグナル上でこの4つの方程式をこのシーケンスで実行します。

誰かが、作業コードの方程式からどのように来ているのですか? どこから始めるべきか分かりません。

各回答ありがとうございました

答えて

1

これはjavascriptで表示されています。 Goにも適切な変更を加えます。私はすべてをテストしたことはなく、単に数式の式をコードに変換しました。エラーがあれば、答えを修正してください。

var pi = 3.14; 

var blackmann = function(N){ 
    var a = 0.16; 
    var a0 = (1-a)/2, a1 = 1/2, a2 = a/2; 
    var w = []; 
    for (var i=0; i<N, i++){ 
     w[i] = a0 - a1*Math.cos(2*pi*i/N) - a2*Math.cos(4*pi*i/N); 
    } 
    return w; 
} 

var fft = function(x, K){ 
    var X1 = [], X2 = []; 
    var N = x.length; 
    // X1 for the real spectrum, X2 for the imaginary part. 
    // For magnitude spectrum take |X1^2 + X2^2| 
    // For a K point fft 
    for (var k=0; k<K; k++){ 
     for (var n=0; n<N; n++){ 
      X1[k] = Math.cos(2*pi*n/N); 
      X2[k] = Math.sin(-2*pi*n/N); 
     } 
    } 
    return {"real":X1, "img":X2} 
} 

var smooting = function(x){ 
    var s = [], t = 0.16 
    s[0] = x[0]; 
    for (var i=1; i<x.length; i++){ 
     s = t*s[i-1] + (1-t)*x[i] 
    } 
    return s 
} 

var decibel = function(X){ 
    var Y = []; 
    for (var i =0;i<X.length(); i++){ 
     Y[i] = Math.log10(Math.abs(X[i])); 
    } 
    return Y; 
} 
+0

こんにちは、ありがとう、私はテストします。 – Aron

+0

私は1つの質問があります、あなたは少しfftでKを私に説明することができますか? – Aron

+0

DSP stachexchangeでお問い合わせ – TheChetan

関連する問題