MATLAB で純粋な信号とノイズの多い信号の dB レベルを取得しようとしています。私のプログラムの一部は次のとおりです。
Fs= 3000;
t = 0:1/Fs:3*(Fs-1)/Fs;
y = 10^(40/20)*sin(2*pi*500*t);
x = 10^(60/20)*randn(size(y));
rmsx = rms(x);
rmsy = rms(y);
ydb = mag2db(rmsy)
xdb = mag2db(rmsx)
これから得られる結果は x(ノイズ) = 60dB ですが、y(信号) = 40dB ではなく 36dB です。
ただし、代わりに y の rms 値の代わりに最大値を使用すると、40dB が得られます。また、rms 値の代わりに最大値を使用したノイズについては、70 の dB が得られます。
どちらがより良い方法ですか?計算で実効値または最大値を使用するか、それとも問題になりますか?
また、信号をサウンドとして再生すると、@0dB はまだトーンを取得しています。
dB は値と基準値の比率であることを理解しています。しかし、0dB = トーンなしになるように、コードにどのような変更を加えることができますか?