音のパワースペクトラム解析

9 ビュー (過去 30 日間)
Cir 2t
Cir 2t 2020 年 8 月 20 日
コメント済み: takemoto 2020 年 8 月 24 日
192kHzで取得した音源のパワースペクトラムの解析を行っているのですが、予想と違う結果になり困っています。
他のアプリでは、うまく取れているように見えたので、おそらく下記の私のmatlabコードに問題があるとは思うのですが。。。。。
おかしい個所を修正していただけると非常に助かります。
どうかご指導宜しくお願い致します。
%移動平均
a = 10;
b = ones(1,10);
y2 = filter(b,a,y);
y3=y2(1,192000:30000000);
data=y3(1,:);%yの構造データのうち、1行目のベクトルデータをdata変数に収納
fftdata=fft(data);%dataをfftにかける。その結果を、fftdata変数に収納。
%スペクトラム強度の図示。
pow_fftdata=abs(fftdata).^2/length(fftdata);
figure(1);
plot(pow_fftdata);
Fs=192000
freq=0:192000/(length(pow_fftdata)-1):192000/2;%周波数解像度の設定
singlePow=[pow_fftdata(1),2*pow_fftdata(2:length(freq))];%????
%ゲインをdBに変換
ydb = mag2db(singlePow);
figure(2);
plot(freq,singlePow);%横軸がfreqで、縦軸がsinglePow
xlabel('Freqency [kHz]');
ylabel('Power [dB]');
xlim([0,100]);
  2 件のコメント
takemoto
takemoto 2020 年 8 月 20 日
ざっと拝見したところ特に問題はなさそうですが、具体的にどの様な結果を期待されていて、他のアプリとはどの様に異なりますか?
Cir 2t
Cir 2t 2020 年 8 月 21 日
ありがとうございます。
とりあえず、解決できそうです。
ご迷惑おかけしました。

サインインしてコメントする。

採用された回答

Shoumei
Shoumei 2020 年 8 月 21 日
Signal Processing Toolboxをお持ちであれば、以下のコマンドを実行して期待した結果が得られませんか?
data = y2(192000:30000000);
periodogram(data)
  2 件のコメント
Cir 2t
Cir 2t 2020 年 8 月 21 日
ありがとうございます。
このコマンドで、できそうな気がします。
まだ、完璧ではないのですが。
ちなみにで申し訳ないのですが、線の色を黒にする方法はありますか?
今、青線でプロットされていまして、できれば黒にしたいと思いまして。
調べたのですが、うまく修正できないで困っております。
takemoto
takemoto 2020 年 8 月 24 日
線のハンドルを取得することで、プロット上の線の属性を編集することができます。
periodogramでスペクトルを表示させた後、以下の処理を追加することで
線の色を変えられると思います。
h1 = gca; % 座標軸のハンドル取得
h2 = h1.Children; % "線"のハンドル(座上軸の子ハンドル)取得
h2.Color = 'black'; % 線ハンドルに対して、”黒”を設定

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeスペクトル測定 についてさらに検索

Community Treasure Hunt

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

Start Hunting!