1

我正在尝试对信号进行一些计算。该信号应该是来自 rfid 标签的测量读数,该标签由 868 MHz 载波上的 40 kHz 左右的块波调制。我的信号以 250 MHz 采样,给我 1250005 个样本,这些样本存储在这个.mat 文件中。

现在我想绘制频谱 x[n]。我被告知要做的是对 1024 个样本的片段进行 fft。或者使用 Matlabs PSD 函数。但我正在为此苦苦挣扎。到目前为止,这是我的 Matlab 代码:

load antenna_1;
x = channel_1;

Fs = 250e6; % Sampling frequency 
t = (0:length(channel_1)-1)*1/Fs; % Time vector 
nfft = 1024; % Length of FFT

X = fft(x,nfft);
X = X(1:nfft/2);
mx = abs(X);
f = (0:nfft/2-1)*Fs/nfft; % Frequency vector

plot(t,x);
xlabel('Time (s)'); ylabel('Amplitude');
figure(2);
plot(f,mx);
xlabel('Frequency (Hz)'); ylabel('Power');

最后一张显示了一个 119 MHZ 附近的频率分量。现在这并不完全奇怪,因为 868 MHz 信号 868 - 3*250 = 118 的混叠。但我仍然不太确定这是否确实是我信号的正确频谱?我将如何使用 psd 函数来获取频谱?

4

1 回答 1

0

你们真的很有帮助,谢谢!

所以我改用 pwelch ,代码如下:

load antenna_1;
x = channel_1;

Fs = 250e6;
Nfft = 2^10;
[Pxx,freq] = pwelch(x,hamming(Nfft),[],[],Fs);

figure;
plot(freq,Pxx);

现在这工作正常,我得到与以前大致相同的结果。但现在我想将 ~119MHz 的组件移到零。所以要在这个方案中从 x[n] 到 w[n] 。为此,我正在应用以下乘法:

n = 0:1:Nfft-1;
w = linspace(0,2*pi,Nfft/2+1);

Pmult = Pxx.*exp(-1j*pi*2);
F = exp(-j*w*119e6).*Pxx';

figure;
plot(freq,abs(Pmult));

但是,我似乎根本无法让组件发生变化?

于 2013-11-09T19:18:12.743 回答