C言語についての質問ではなくてすみません。
ハニング窓→FFT→実部・虚部値の操作→IFFTをすると両端が0の波形になりません。
(ハニング窓→FFT→IFFTでは両端がちゃんと0になります)
これを解決する方法は無いのでしょうか?
両端に0を代入するということではありません。
http://www.cqpub.co.jp/hanbai/books/30/ ... 1_6syo.pdf
の最後の方を見ると波形が広がってると書かれているのですが...
IFFTでの波形への変換
Re: IFFTでの波形への変換
PDFに書かれているとおりに後半に0を挿入し、
IFFTの後に広がってしまった波形を圧縮して元の時間で両端が0になるようにすればいいのでは?
(あんまり意味ないですが)IFFTの後にさらに窓関数を通せば強制的に両端を0にできます。
IFFTの後に広がってしまった波形を圧縮して元の時間で両端が0になるようにすればいいのでは?
(あんまり意味ないですが)IFFTの後にさらに窓関数を通せば強制的に両端を0にできます。
-
tlnlniri
Re: IFFTでの波形への変換
h2so5さん返信ありがとうございます。
「後半に0を挿入し~」というのは
「[データ]0000」(合計4096サンプル)といった感じでいいのでしょうかね?
あと、IFFTの後にハニング窓をかけたら音が歪みましたのでだめです。
「後半に0を挿入し~」というのは
「[データ]0000」(合計4096サンプル)といった感じでいいのでしょうかね?
あと、IFFTの後にハニング窓をかけたら音が歪みましたのでだめです。
Re: IFFTでの波形への変換
専門ではないので詳しくは分かりませんが、普通に考えるとスペクトルの操作によって低周波成分の割合が増加すれば波形は広がるはずです。
逆に言うと高周波成分の操作では影響が少ないということです。
どれだけ0を挿入すればいいかは実際に試してみないと何とも言えないかと。
逆に言うと高周波成分の操作では影響が少ないということです。
どれだけ0を挿入すればいいかは実際に試してみないと何とも言えないかと。
-
tlnlniri
Re: IFFTでの波形への変換
せっかくh2so5さんに考えてもらったのにすいません。
他の方法で解決できましたので書いておきます。
今まで、周波数領域で数値にかけるのを
| ̄|(理想フィルタみたいなの)
にしてました。(IFFTで両端が大きく0からずれる)
それを、
/\(ロールオフ的な)
にしたら両端が0に近い数値になり音にノイズが入らなくなりました。
今回解決に至るに下記のサイトがヒントになりました。
http://okwave.jp/qa/q6679995.html
他の方法で解決できましたので書いておきます。
今まで、周波数領域で数値にかけるのを
| ̄|(理想フィルタみたいなの)
にしてました。(IFFTで両端が大きく0からずれる)
それを、
/\(ロールオフ的な)
にしたら両端が0に近い数値になり音にノイズが入らなくなりました。
今回解決に至るに下記のサイトがヒントになりました。
http://okwave.jp/qa/q6679995.html