入力信号の高調波を追加するにはどうすればよいですか?
- 頻度推定を行わずに(頻度が提供されます)
- 頻度推定を行うことによって
入力:信号のベクトル化された形式出力:入力と同じ形式
注:答えがわかっている場合は、この問題の解決に役立つアルゴリズムまたはリンクを教えてください。
入力信号の高調波を追加するにはどうすればよいですか?
入力:信号のベクトル化された形式出力:入力と同じ形式
注:答えがわかっている場合は、この問題の解決に役立つアルゴリズムまたはリンクを教えてください。
If the frequency is known, then you can presumably add a harmonic just by adding a sine wave of the appropriate frequency (i.e. double the known frequency) to the signal. Something like:
result = signal .* sin((0:(1/sample_rate):length_of_signal) * freq));
When the frequency is unknown you could use an FFT (@L7ColWinters linked to the docs for that) to find the frequencies. Since you can convert a signal from the frequency domain back to the time domain (ifft for the inverse), it might be easier to do the FFT, add the harmonic and then do an inverse FFT, or once you know the frequency from the FFT you could add the sine wave to the original input as in the first case.
A
入力が間隔の振幅配列を持つ時間領域信号であると仮定します[0, t0]
。次に、でループしi
ます
A [i] = A [i] + A0 * sin(2 pi f dt)
ここで、dtは各配列要素間の時間差dt = N/t0
です。
A0
周波数に対応する位置にを追加してからf
、@L7ColWintersによるリンクに従って逆フーリエ変換を行う必要があります。トリガーIDを調べると、次のことがわかります。
cos(2x)= 2 *(cos(x))^ 2 -1
1次高調波は基本周波数の2倍であるため、入力を2乗し、必要に応じてスケーリングし、DCオフセットを削除するだけです。頻度を知る必要も推定する必要もありません。
ナイキストは引き続き適用されるため、エイリアシングを防ぐために入力をローパスする必要がある場合があることに注意してください。