【发布时间】:2013-11-07 23:14:38
【问题描述】:
我正在尝试对信号进行一些计算。该信号应该是来自 rfid 标签的测量读数,该标签由 868 MHz 载波上的 40 kHz 左右的块波调制。我拥有的信号以 250 MHz 采样,给我 1250005 个样本,这些样本存储在 .mat file 中。
现在我想绘制频谱 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');
最后一个plot 向我展示了一个大约 119 MHZ 的频率分量。现在这并不完全奇怪,因为 868 MHz 信号 868 - 3*250 = 118 的混叠。但我仍然不太确定这是否确实是我信号的正确频谱?以及如何使用 psd 函数获取频谱?
【问题讨论】:
-
您的代码和结果图对我来说看起来不错
-
我期待看到由于混叠导致的多次重复信号,我不应该看到这些吗?
-
只有一个这样的重复属于观察到的频率跨度 (0 -- Fs/2)
-
psd函数已弃用,您应该改用信号分析工具箱中的pwelch。为了正确估计测量信号的频谱,此功能比手动执行一些 FFT 要好得多。 -
@BasSwinckels 谢谢,我试图弄清楚如何准确地实现这个功能。这就是我使用的:加载天线_1; x = 通道_1; Fs = 250e6; Nfft = 1024; [Pxx,频率] = pwelch(x,hamming(Nfft),[],[],Fs);情节(频率,Pxx);这给出了与以前相似的结果,但仍然只显示 120MHz 的一个组件,我怎么能看到更多?