ピーク値の読み取り

パワースペクトルのグラフからピークとなる周波数とそれに対応するパワーを、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