2016-05-21 5 views
0

私はこの間に私の脳を数日間ラックに入れました。指数関数的なパルスを時間の経過とともにプロットする

私は、特定の期間にわたってオーディオパルスを生成するために、SoXでPHPを使用することを計画しています。この場合、私は1秒あたりに発生するパルスの数を記述する方法として周波数を使用しています。従って、8の周波数は毎秒8パルスである。私が使うことになるパルスIは、オーディオを製造する際、私は時間でそれらをプロットすることができますように、これらのパルスのそれぞれの開始時間を知っておく必要があり

img

(等時間隔トーン)の

例。これは、周波数が一定のままであるときに容易に行われる。しかし、時間の経過とともに周波数が変化すると、平均パルス量を完了するのに時間がかかりすぎる、または時間がかかりすぎるという問題が発生します。

Drawing sine wave with increasing Amplitude and frequency over time:ここ

は、私のようなトピックを使用して、このテーマに関する研究の多くを行ってきた

var f0 = 8;  //Start frequency 
var f1 = 1;  //End frequency 
var interval = 30; //Total time 

var average_freq = (f0 + f1)/2;  //Average frequency 
var pulses = average_freq * interval; //Total number of pulses needed 

var pulse_start_time = 0; 

for(var i = 0; i < pulses; i++) { 
    var delta = i/pulses; 
    var this_freq = f0 + (f1 - f0) * delta; 

    /* 
     need exponential formula to find start time 
    */ 

    console.log(   "pulse: "+ (i+1)  + ", "+ 
        "pulse frequency: "+ this_freq + ", "+ 
         "start time: "+ pulse_start_time); 

    pulse_start_time += 1/this_freq; //This method works fine providing 
             //both start and end frequency are 
             //the same. 
} 

(私は数学が動作を取得するために今のJSを使用しています)JavaScriptでの例です

Plot Frequency Sweep In Python

sine wave that slowly ramps up frequency from f1 to f2 for a given time

sine wave that exponentialy changes between frequencies f1 and f2 at given time/amount of samples

しかし、私はまだこれらの技術を使用して、各パルスの開始時間を取得する方法を見つけ出すことができないんだ、または多分私はすべてが間違っているこのことについてつもりです。

ご協力いただければ幸いです! :)

+0

私は間違っているかもしれませんが、これは不確実性の原理に関連していると思います。波の周波数を知るためには、しばらくそれを見なければならないため、波がどこで始まったのかわからないのです。 – Teepeemm

+0

'パルス 'とはどういう意味ですか?いくつかのピークを持つ正弦波を意味するのでしょうか、それとも何か他のものがありますか? – pingul

+0

パルスで私はアイソクロニック調を指しています。私は例を含めるために私の質問を編集しました.. – pJay

答えて

0

代わりに信号に適切な数式方程式y=f(t)を使用する必要があります。そのようにして、振幅も取得します。私はあなたの信号の性質を知らないが、対数のようには見えない。ギャップ/信号遷移の鋭

  • c2=frequency of pulses/2*Pi
  • c3が振幅である

    • t
    • c0=frequency of gaps/2*Pi
    • c1時間である:ここで

      y=(|sin(c0*t)| + sin(c0*t))^c1 * sin(c2*t) * c3 
      

      :私はこのようにそれを構築することになります信号

    最初の部分は、ギャップと形状の振幅形状を持つベース信号を変調するだけです。最後の熱はベース信号です。

    1秒あたりの平均パルス数は、あなたの信号周波数ではありません!代わりに、その半分程度です(信号対ギャップ比に依存します)。いくつかのループでtをインクリメントして、データに対してy(t)を計算してください。浮動小数点の丸めの問題を回避するには、tを2つのsin波間の共通期間に制限します。

  • 関連する問題