ピーク値の読み取り
パワースペクトルのグラフからピークとなる周波数とそれに対応するパワーを、findpeaks関数を使って読み取る方法を紹介する。
まず、周波数 f と パワースペクトル Y がすでに用意されているものとして、
plot(f,Y)
とすると、次のようなグラフが得られるものとする。
次に、findpeaks関数を使って以下のようにし、
[y,i] = findpeaks(Y);
plot(f,Y,f(i),y,'ro');
とすると、次のようなグラフが得られる。
ピークのところに赤丸が付いているのが分かる。findpeaks関数の返り値[y,i]は、yにはピークでの値、iにはそのインデックスを返してくれる。
ただし、上のグラフでは、あまりピークに見えなさそうなところにもピークが立っている。急峻なピークだけを取り出したいときには、以下のようにthresholdの値を大きくすればよい(デフォルトは0)。
[y,i] = findpeaks(Y,'threshold', 7);
plot(f,Y,f(i),y,'ro');
他にもピーク検出のパラメータはいくつかあるが、詳細は、Matlabで'help findpeaks'とするか、以下のURLを参考にすること。
http://www.mathworks.com/access/helpdesk_ja_JP/help/toolbox/signal/findpeaks.html