필터 지우기
필터 지우기

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

조회 수: 18 (최근 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 CenterFile Exchange에서 スペクトル測定에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!