필터 지우기
필터 지우기

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

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

채택된 답변

Hernia Baby
Hernia Baby 2022년 3월 6일
ちょっと懸念点合わせて回答させてください
■懸念事項
 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
Hernia Baby
Hernia Baby 2022년 3월 7일
なるほど、単位をそろえていたのですね。
それでしたらsp=10*log10(p/20^2)であっていると思います。
となっているので消えますね。
Tomo
Tomo 2022년 3월 7일
ご返信ありがとうございます.承知いたしました.
ありがとうございました.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

태그

Community Treasure Hunt

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

Start Hunting!