入力信号の高調波をどのように追加できますか?周波数推定を行うことなく信号に高調波を追加する
- (周波数が提供される)
- 周波数推定を
入力することにより:信号 出力のベクトル形式:入力
注と同じフォーマット:あなたが知っている場合は答え、私にこの問題を解決するのに役立つアルゴリズムやリンクを教えてください。
入力信号の高調波をどのように追加できますか?周波数推定を行うことなく信号に高調波を追加する
入力することにより:信号 出力のベクトル形式:入力
注と同じフォーマット:あなたが知っている場合は答え、私にこの問題を解決するのに役立つアルゴリズムやリンクを教えてください。
周波数が分かっている場合は、信号に適切な周波数の正弦波(つまり既知の周波数の倍数)を加えるだけで、おそらく高調波を加えることができます。ような何か:
result = signal .* sin((0:(1/sample_rate):length_of_signal) * freq));
周波数を使用すると、周波数を見つけるために(そのためにドキュメントにリンクされているL7ColWinters @)FFTを使用することができ不明です。周波数領域からの信号を時間領域(逆数の場合はifft)に戻すことができるので、FFTを実行し、高調波を加えてから逆FFTを行う方が簡単かもしれません。あるいは、FFT最初のケースと同様に正弦波を元の入力に追加することができます。
あなたの入力は間隔[0, t0]
と振幅配列A
と時間領域の信号であると仮定します。次いで
A [I] = A [i]が+ A0 * SIN(2パイのF DT)dtは、各配列要素、すなわちdt = N/t0
間の時間差である
とi
をループ。
によって周波数f
に対応する位置にA0
を追加し、その後、逆フーリエ変換でください、次のリンク必要最初の高調波は、基本周波数の二重なのでtrig identitiesを通じて、あなたはその
COS(2倍)= 2 *(COS(X))^ 2 -1
が表示されます入力を四角形にし、必要に応じて縮尺を変えて、DCオフセットを取り除くことができます。頻度は知られていたり推定されたりする必要はありません。
Nyquistは依然として適用されるので、エイリアシングを防ぐために入力を低く抑えなければならない場合があります。
http://www.mathworks.com/help/techdoc/ref/fft.html – L7ColWinters
これはプログラミングに関する質問ではありません。信号のより多くの理論に似ています。 – Vincent
候補者はhttp://dsp.stackexchange.com/に移動しますか? – mpdonadio