
FFTを用いてドレミの周波数解析のプログラムを作ろうと勉強しています。
そこで理論的にわかっていないため質問させていただきました。
ハミング窓の使い方についてです。
ドレミファソラシドと1secごとに変化していくWAVEファイルがあった場合。(0-1秒=ド 1-2秒=レ)
1:0~50msハミング窓を与えてやる
2:その区間をFFTする。(データ数は512で考える)
3:求まった基本周波数からドレミの判定を行う
4:50msずらす
5:1に戻る
※汚いですが手書きで自分の↑のイメージを書いて見ました。http://www.jpdo.com/link/1/img/49864.jpg
このようにして9秒まで分割して計算すればドレミの解析が出来るはずだと思っているのですが、どうやってハミング窓を0~50msなどという風に使えばいいのかがわかりません。
このあたりの概念がさっぱりなので、
どうすれば0~50msの区間をハミング窓で得られるのか。
ハミング窓で得た区間をFFTするにはどう考えるのか。
を是非教えてください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>for(i=0; i<8000 ;i=i+j){
> for(j=0; j<4000 ;j++){
> /*元のWAVEデータに窓関数を掛ける*/
> }
>}
これだと、i=i+j の、jは未定義ってことになってしまいますが。
for(i=0; i<8000-0.05*8000; i+=0.03*8000) { // 30msごとずらす
for(j=0; j<0.05*8000; j++) { // 50ms幅の窓関数をかける
clippedData[j] = data[i+j] * hamming[j];
fftresult = FFT(clippedData);
}
}
みたいな感じになるはずです。
なるほど 参考になります。
これを参考にしてちょっと色々といじってみます。ありがとうございました。
また質問があったときはよろしくお願いします!
No.1
- 回答日時:
フローはだいたい合ってると思います。
で、肝心の質問なんですが、
>どうすれば0~50msの区間をハミング窓で得られるのか
ていう質問の意味がよく分かりません。
つまり1~5のうちの何が分からないと言っているのですか?
台(サポート)が0~50msがなるハミング関数がわからないってことですか?
日本語が変で申し訳ないです。
自分もよくわかってないため日本語にうまくできないのですが
1:の 一定区間ごとにハミング関数を掛ける方法がわかりません。
時間ごとの周波数変化を見るためには、区間で分割してハミング関数をかけてFFTすればいい。
これはわかっているのですが、区間で分割するってどうするんだろう?と。
JPGの方でもイメージは掴めているのですが、実際どう使えばいいのかがわかりません。
例えば1秒のWAVEでサンプリング周波数が8000の場合
>for(i=0; i<8000 ;i=i+j){
> for(j=0; j<4000 ;j++){
> /*元のWAVEデータに窓関数を掛ける*/
> }
>}
このようにすれば、0-50msと50-100msには同じ形の窓関数が適用されるという事でしょうか?
1つのファイルを何個かに区切って窓関数を掛けたりDFTする方法とかがよくわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 風力発電での音 1 2023/04/16 08:55
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- 物理学 風車が回転する理由 5 2023/05/08 08:03
- 物理学 流体力学の勉強方法 2 2023/04/25 23:18
- その他(自然科学) 風車音の測定 3 2023/04/28 07:12
- 数学 フーリエ変換後の負の周波数成分の扱いについて 4 2022/09/03 10:18
- 教育・学術・研究 仕事の方向性を変えたい。経営分析→数値解析 1 2023/06/18 16:51
- 物理学 2種類の風切り音の周波数の違い 1 2023/04/20 07:39
- 物理学 波動方程式のようなもの 1 2023/05/13 07:23
- 物理学 フーリエ級数展開をExcelのFFTでシミュレートする 5 2023/07/03 22:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
wordやexcelでの関数式の求め方
-
VBAでJSONをパースする方法につ...
-
Access 主キーについて
-
EXECEl VBA FIN...
-
プログラムで重複した時間帯は...
-
エクセルで2つの時系列のデー...
-
C言語を用いて、GNUPLOTでリア...
-
[Excel] 関数のみでデータの整...
-
VBSからPOST送信したいです。
-
【エクセル】測定時間がバラバ...
-
ワイモバイルの速度制限
-
OS無しの状態でのNICデバイスの...
-
python pandas リストをデータ...
-
サーブレットに送信したデータ...
-
csvを扱う便利な コード(関数...
-
LoadPictureしたイメージデータ...
-
Linux、PHP、MySQLのサイトで、...
-
C# でDataTableの更新を高速化...
-
ハミング窓関数とFFT(高速フー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
メモ帳(テキストデータ)をExc...
-
ユーザーフォームのテキストボ...
-
特定のデータの抽出方法を教え...
-
二分探索の平均探索回数
-
EXCELVBAでSQLserverからデータ...
-
Accessで該当データにフラグを...
-
VBA 空白セルを削除ではない方...
-
この行は既に別のテーブルに属...
-
Excel VBAでのオートフィルター...
-
[C言語] コメント文字列を無視...
-
エクセルで2つの時系列のデー...
-
アクセス2000で画像データ...
-
CString型の文字列連結について
-
カンマからスラッシュに
-
VBにおいてフォーム間の変数の...
-
<VB>String→Object
おすすめ情報