pspectrumに​てデフォルトで使われ​ている式を変える方法

表題の件について,解決策をご存じの方がいらっしゃいましたら,ご回答いただけましたら幸いでございます.
以下,質問の詳細について述べさせていただきます.
現在,pspectrum関数を用いて,power spectrum densityを示そうと考えております.
MATLABのヘルプセンターには「出力引数を設定せずに pspectrum(___) を使用すると、現在の Figure ウィンドウにスペクトル推定がプロットされます。プロットでは、この関数が 10 log10(p) を使用して p を dB に変換します。」と書かれております.
私は,「10 log10(p)」ではなく, 「20 log10(p/20)」という式でdBに変換したいのですが,コードをどのように書けばよいのかわからず困っております.
ご存じの方がいらっしゃいましたら,ご教授いただければ幸いです.よろしくお願いいたします.

 Réponse acceptée

Hernia Baby
Hernia Baby le 6 Mar 2022

0 votes

ちょっと懸念点合わせて回答させてください
■懸念事項
 pは平均パワーなので振幅をAとすると となっています
 なので の状態です
 ここで は望んでいない数字かもしれません
■質問の回答
 @Tomo さんの回答に移ります
 これは [p,f] = pspectrum(___) からpを変換すればいいだけです
■例
まずは準備
Fs = 1e3;
t = (0:1/Fs:1)';
% 振幅5 周波数10[Hz] の信号
A = 5;
f1 = 10;
x = A*sin(2*pi*f1*t);
plot(t,x)
ここで pspectrum を使用します
[p,f] = pspectrum(x,Fs);
figure
plot(f,p)
xlim([0 50])
xlabel('周波数[Hz]')
text(f(p==max(p)),p(p==max(p))+.5,sprintf('%g',round(max(p),1)));
ここでだいたい振幅の二乗の半分で表記されていることがわかります
このあとは回答になります
SP = 20*log10(p/20);
figure
plot(f,SP)
xlim([0 50])
xlabel('周波数[Hz]')

4 commentaires

Hernia Baby
Hernia Baby le 6 Mar 2022
たぶん音を解析したいのかなと思ってます。 pを最小可聴値(20μ)の二乗で割って10*logをとればdBSPLが取得できます。
Tomo
Tomo le 7 Mar 2022
ご丁寧にご回答いただきまして,ありがとうございます.無事疑問点は解決いたしました.ありがとうございました.
懸念事項について,お聞きしたいです.
μPaに変換済みの音データをdBに変換し,その値を使ってPSDを出したいのですが,その場合は,コメントでお示しいただいたようにsp=10*log10(p/20^2)で計算すれば,μPa→dBにできている,ということでお間違いないでしょうか.
よろしくお願いいたします.
Hernia Baby
Hernia Baby le 7 Mar 2022
なるほど、単位をそろえていたのですね。
それでしたらsp=10*log10(p/20^2)であっていると思います。
となっているので消えますね。
Tomo
Tomo le 7 Mar 2022
ご返信ありがとうございます.承知いたしました.
ありがとうございました.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!