当我将比特率加倍时,我看不到 I_spectrum 和 Q_spectrum 的差异,但为什么呢?

信息处理 频谱 qpsk
2022-01-29 04:18:36

我想比较一个基本发射机的两个不同的 IQ 频谱图,其中一个我将比特率加倍。我期待一个不同的结果,可能是一个更高/更快的图表。它看起来有点像,但是双倍的比特率有更多的噪音?我不明白这里的结果。

1MHz比特率 1MHz比特率

2MHz比特率 2MHz比特率

1个回答

你知道 ADS 是如何绘制频谱的吗?在不进行某种归一化的情况下绘制频谱会给你一个更高的幅度。一旦确定了 FFT 的大小,无论选择何种采样率,按长度归一化都会给您相同的幅度。

例如,让我们采用两个矩形信号,一个以 1 MHz 采样,另一个以 2 MHz 采样。以下是它们未经归一化的光谱:

在此处输入图像描述

由于底部的采样速度是两倍,它最终会产生两倍长的 FFT 大小,因此峰值增加了 6 dB。

现在将其与相同的精确信号进行比较,但现在它们的幅度通过它们各自的 FFT 大小进行归一化:

在此处输入图像描述

现在您可以看到峰值的大小相同。您可以整天玩标准化以满足您的需要。通常最重要的是光谱形状。

这是一些快速的 MATLAB 代码,因此您可以自己尝试一下并尝试一下。

%% Signal generation and FFT

% Sampling rates
fs1 = 1e6;
fs2 = 2e6;

% Rectangular pulse signals
t1 = 0:1/fs1:1e-5;
t2 = 0:1/fs2:1e-5;
pulseSignal1 = ones(1, numel(t1)); 
pulseSignal2 = ones(1, numel(t2)); 

% FFT setup
nfft1 = 100*numel(t1); 
f1 = fs1.*(-nfft1/2:nfft1/2-1)/nfft1; 

nfft2 = 100*numel(t2); 
f2 = fs2.*(-nfft2/2:nfft2/2-1)/nfft2; 


%% Without Normalization

figure;
subplot(2, 1, 1);
plot(f1./1e6, 20*log10(abs(fftshift(fft(pulseSignal1, nfft1)))));
xlabel("Frequency (MHz");
ylabel("Magnituide (dB)");
legend("F_s = 1 MHz");
ylim([-40 50]);

subplot(2, 1, 2);
plot(f2./1e6, 20*log10(abs(fftshift(fft(pulseSignal2, nfft2)))));
xlabel("Frequency (MHz");
ylabel("Magnituide (dB)");
legend("F_s = 2 MHz");
ylim([-40 50]);

%% With Normalization

figure;
subplot(2, 1, 1);
plot(f1./1e6, 20*log10(abs(fftshift(fft(pulseSignal1, nfft1)./nfft1))));
xlabel("Frequency (MHz");
ylabel("Magnituide (dB)");
legend("F_s = 1 MHz");
ylim([-80 -10]);

subplot(2, 1, 2);
plot(f2./1e6, 20*log10(abs(fftshift(fft(pulseSignal2, nfft2)./nfft2))));
xlabel("Frequency (MHz");
ylabel("Magnituide (dB)");
legend("F_s = 2 MHz");
ylim([-80 -10]);