MATLAB Answers

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

7 ビュー (過去 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 件のコメント
Cir 2t
Cir 2t 2020 年 8 月 21 日
ありがとうございます。
とりあえず、解決できそうです。
ご迷惑おかけしました。

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

採用された回答

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

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

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!