问题:对于离散信号而言,已知样点值、采样频率,如何画出与采样频率对应的幅频曲线?
已知样点数为N,采样频率为Fs,数据记为data。则,可画出两种幅频响应:
% 第一种,幅频响应频率范围为(0-Fs)
Data_f = fft(data); % 频域信号
abs_Data_f = abs(Data_f);
% 第二种,幅频响应频率范围为(-Fs/2,Fs/2)
Datao_f_shift = fftshift(fft(data));
abs1_Data_f = abs(Datao_f_shift);
即,若希望幅频响应横坐标为(-Fs/2,Fs/2),则,要在对数据求fft后用fftshift函数。
N = 2048;
x = (0:N-1)/N*Fs; % 第一种图的横坐标
x1 = (-N/2:N/2-1)/N*Fs; % 第二种图的横坐标
subplot(2,1,1)
plot(x,abs_Data_f,'linewidth',2);title('未用fftshift')
subplot(2,1,2)
plot(x1,abs1_Data_f,'linewidth',2);title('用了fftshift')
设置Fs为12.8MHZ,作图如下:
注:上图画的是,FFT点数(子载波数目)为2048的OFDM数据,其中,虚拟子载波个数为512。Fs=12.8MHZ,可以看出,信号带宽为12.8*(3/4)=9.6MHZ。