我试图在 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(noise) = 60dB,但 y(signal) = 36dB 而不是 40dB。
但是,如果我使用 y 的最大值而不是 rms 值,我会得到 40dB。对于使用最大值而不是 rms 值的噪声,我的 dB 为 70。
哪个是更好的方法?在计算中使用 rms 值或最大值,甚至有关系吗?
此外,当我将信号作为声音播放时,@0dB 我仍然会听到音调。
我理解 dB 是值和参考值之间的比率。但是我可以对代码进行哪些修改,使 0dB = 无音调