※ ChatGPTを利用し、要約された質問です(原文:パワースペクトルの0dBの値について)
パワースペクトルの0dBの値について
このQ&Aのポイント
matlabを用いて時系列データのパワースペクトルを計算し、グラフにプロットしています。
パワースペクトルの0dBは、時系列の値では1になります。
関数の中でpower_fftを高速フーリエ変換のデータ長で割っているのは、正規化のためです。
matlabを用いて時系列データのパワースペクトルを計算、対数表示でグラフにプロットしています。
matlabのfft関数のヘルプに記載されていた例を参考に、以下のような自作の関数を組んで計算しているのですが、2つ質問があります。
1. この場合、パワースペクトルの0dBは、時系列の値ではいくつになるのでしょうか?
0dB = 1でしょうか?
2. 関数の中において、power_fftをN_fft(高速フーリエ変換時のデータ長さ)で割っている事の理由がわからなかったのですが、なぜ行っているのでしょうか?
------------------------------------------------
以下、自作のパワースペクトル表示関数を示します
function Power_db(Data_xx)
fs = 1000; % サンプリング周波数 [Hz]
N_fft = 2^12; % 4096個
xx_fft = fft(Data_xx,N_fft);
power_xx = xx_fft.* conj(xx_fft) / N_fft;
frequency = fs*(0:2047)/N_fft; % (0:2047)で500Hzまで
plot(frequency,20*log10(power_xx(1:2048)))
xlabel('Frequency [Hz]');
ylabel('Power Spectrum [dB]');
grid on;
---------------------------------------------------------
以上です。
何か足らない情報などがありましたらお申し付けください。
よろしくお願い致します。
お礼
info22様 回答して頂きありがとうございます。 基準信号として片側振幅1のcos波を作成して上のプログラムを実行したところ、約60dBの値になりました。 これを基準値として考えていきたいと思います。 どうもありがとうございました。