ハミング窓 窓かけについて

このようなプログラムに窓かけをするとどのようになりますか.
入力xが二列あったためLch,Rchの二つに分けていますが,Lchのみで大丈夫です.
最近MATLABを使い始めたため,初歩的な質問で申し訳ありませんが,よろしくお願いいたします.

1 Kommentar

Kaede
Kaede am 31 Mai 2020
使用したデータはこちらです.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Hiroshi Miyagawa
Hiroshi Miyagawa am 31 Mai 2020

0 Stimmen

MATLAB の Signal Processing Toolbox には各種窓関数があります。
以下の回答もご参照ください。
なお、ハミング窓をかける関数 hamming については以下をご参照ください。

10 Kommentare

Kaede
Kaede am 1 Jun. 2020
こんにちは.ご回答ありがとうございます.私もこちらのページは拝見させていただきましたが,MATLABを最近使い始めたため理解するのが難しい部分があるため,大変申し訳ないですが説明していただければありがたいです.
具体的にはhammingにはLを入れると書いていますが,ハミング窓をかけるときは入力のxは関係ないのでしょうか.
以上です,よろしくお願いいたします.
Hiroshi Miyagawa
Hiroshi Miyagawa am 1 Jun. 2020
fft関数に使用される窓関数について」の回答にあるコードを1行1行実行して動作を確認されてはいかがでしょうか?
関数hammingはハミング窓を生成する関数です。上記では「ハミング窓をかける関数」と書いてしまいました。混乱させてしまい申し訳ありません。
実際に窓かけしているのはハミング窓を生成(W = (hamming(L))';)した次の行ですね。
Kaede
Kaede am 1 Jun. 2020
お返事ありがとうございます.
かしこまりました.
Wに窓かけをしたいものを掛ければよいという認識でこのような式を追加して窓かけをしてみたのですがこのようなグラフになるのでしょうか.
W = (hamming(L));
d=d.*W;
Kaede
Kaede am 1 Jun. 2020
横軸がデータ数になってしまっているのですがここのtは時間分解能でよいのでしょうか.
Hiroshi Miyagawa
Hiroshi Miyagawa am 1 Jun. 2020
具体的な値が不明なためそのようなグラフになるのか否かはよく分かりません。
fft関数に使用される窓関数について」の回答にあるコードでの t は時間列を表します。0から 1/Fs 刻みで (L-1)*T までです。
まずは「fft関数に使用される窓関数について」の回答にあるコードそのものをそのまま実行して、各行で何をやっているか理解するところから実施してはいかがでしょうか。
理解出来たら、ご自身のデータを当てはめてみる、という流れが結局一番早いと思います。
Shoumei
Shoumei am 3 Jun. 2020
kaedeさんのコードを確認したところ、L=8となっており、遅延用のベクターサイズとなっているようです。
その長さで窓関数を適用しても、所望の結果は得られないと思います。窓関数は信号の両端に発生する不連続点の影響を無くすように、両端の値が小さくなっています。
>> windowDesigner
で各種窓関数の時間軸波形と周波数軸波形を確認できます。
適用先の信号と同じ要素数の窓関数を作るにはlength関数を使うと良いと思います。
fs = 44100;
t = 0:1/fs:0.08;
d = sin(2*pi*100*t)';
winLen= length(d);
win = hamming(winLen);
dWin = d.*win;
plot(t, d)
hold on, plot(t, dWin)
Kaede
Kaede am 3 Jun. 2020
コメントありがとうございます.L=8はわけもわからず8にしていたため2048で行いました.
自分でハニング窓をかけて1kHzまで表示したらこのような図になりました.自分的には上手くいっているように感じます.
Kaede
Kaede am 3 Jun. 2020
ハミングといいつつもハニングでやってしましたがハミングでも大きく変わりはないように見えました.
Shoumei
Shoumei am 4 Jun. 2020
研究うまく行って良かったですね。
Kaede
Kaede am 5 Jun. 2020
1から100まで説明していただいたおかげで少しずつ理解できてます.ありがとうございました. まだまだわからないことだらけなので助けていただけるとありがたいです.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!