質問: スペクトログラムから信号強度の高い場所を見つける方法 画像処理で速度波形にs変換(s_transform)を適用し表示されたスペクトログラムで、 x軸を時間、y軸を周波数としたとき、特定の範囲の周波数(たとえば、0.5~1.0hzの間)から もっとも信号強度の高い場所を探しその点の信号強度を数値で表す方法はなにかないでしょうか?
回答: こんにちは。 スペクトログラムの信号強度が配列として得られていると思いますので、 所望の周波数の範囲を表すindexを取得し、 その範囲内で最大の信号強度とその位置を取得する という流れで処理が可能です。 それぞれfind関数、max関数を組合わせて書きます。それぞれの使い方は詳細をご覧いただければと思います。なんとなくのコードだけ載せておきます。適宜読み替えてお使いください。 find = f > a & f < b; % 周波数範囲をインデックスとして取得.fが周波数を表すベクトル p(~find,:) = 0; % 所望の周波数範囲外の信号強度はゼロとする。 pmax = max(p(:)); % 最大の信号強度値 [c,r] = find(p == max(p(:))); % その場所