我正在测试混有白噪声的正弦波的 dsp.SpectrumAnalyzer 的输出值。这白噪声的 1e-4,所以我用0.01*randn(1024,1)
它来生成它。正弦波由dsp.SineWave
默认幅度 (=1) 生成。采样率为 44100 Hz。如果默认设置了'SpectrumType'属性dsp.SpectrumAnalyzer
('Power'),则示波器输出如下:
根据Estimate the Power Spectral Density in MATLAB的“将功率转换为 dBW 和 dBm”部分的分析,峰值为 26.9897 dBm,这就是上面的屏幕截图显示的。但是图中的其他值让我感到困惑。我会一一问他们。
(1) 白噪声的功率谱为=1e-4(对吗?),10*log10(1e-4/1e-3)
根据上面链接中的定义,即=-10dBm。但该图显示白噪声的功率谱在-40dBm。这个值是如何获得的?PS:如果我们以 dBW 为单位计算功率谱,10*log10(1e-4)
=-40 接近于图中所示,但这里我使用的是 dBm 单位!
(2) 如果我将'SpectrumType'属性更改dsp.SpectrumAnalyzer
为'功率密度',System对象的输出如下:
根据文档dsp.SpectrumAnalyzer System object中对此属性的解释,现在正弦波的峰值应该是“归一化为 1 赫兹带宽的频谱的幅度平方”。频谱是0.5,所以它的平方是0.25,我期望得到的dBm应该是10*log10(0.25/1e-3)
=23.9794dBm,但是我在图中看到的是12.6948dBm。这个值是如何获得的?
(3) 我们再来看看白噪声的功率谱密度。根据上述问题中的定义,该值应为10*log10(1e-4^2/1e-3)
=-50dBm。我不确定计算是否正确,但它接近数字,虽然似乎有一些距离。问题是,在 MATLAB 中估计功率谱密度的“将功率转换为 dBW 和 dBm”部分说=1e-4*(22050/21.53)=0.1024,但如果我们计算 dBm,我们得到10*log10(0.1024^2/1e-3)
=10.2060。令我惊讶的是,该网页随后显示“白噪声的总功率为 -39.87 dBm”。这个 -39.87 dBm 是如何获得的?
我对这些价值观完全感到困惑。如果您能帮助我澄清它们,我将不胜感激。非常感谢!
以下是您的实验的一些参考代码。我正在使用最新的 Matlab R2016a。
Fs = 44100;
Sineobject1 = dsp.SineWave('SamplesPerFrame',1024, 'PhaseOffset',10,...
'SampleRate',Fs,'Frequency',5000);
SA = dsp.SpectrumAnalyzer('SampleRate',Fs,'SpectrumType','Power',...
'PlotAsTwoSidedSpectrum',false,'Window','Hann',...
'ChannelNames',{'PSD of the input'},'ShowLegend',true);
for Iter = 1:5
Sinewave1 = step(Sineobject1);
Input = Sinewave1;
NoisyInput = Input + 0.01*randn(1024,1);
step(SA,NoisyInput);
end