当我将比特率加倍时,我看不到 I_spectrum 和 Q_spectrum 的差异,但为什么呢?
信息处理
频谱
qpsk
2022-01-29 04:18:36
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]);
其它你可能感兴趣的问题