资源描述
我们知道Fourier分析是信号处理里很重要的技术,matlab提供了强大的信号处理能力, 但是有一些细节部分需要我们注意。记信号f(t)的起始时间为t_start,终止时间为t_end,采样周期为t_s,可以计算信号的 持续时间Duration为t_end -t_start,信号离散化造成的采样点数N = Duration/t_s + 1; 根据Fourier分析的相关结论,我们知道时域的采样将会造成频域的周期化,该周期为采样 频率f_s (著名的香农采样定理基于此)于是,经过matlab的fft函数处理后,得到数据的横坐标为0:f_s/(N-1):f_s。相关代码 如下所示:%matlabfft 测试代码t_s = 0.01;t_start = 0.5; t_end = 5;t = t_start:t_s:t_end;y = 0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);y_f = fft(y);subplot(3,1,1);plot(t,y); title(original signal);Duration = t_end - t_start;Sampling_points = Duration/t_s + 1;f_s = 1/t_s;f_x = 0:f_s/(Sampling_points-1):f_s;subplot(3,1,2);plot(f_x,abs(y_f); title(fft transform); subplot(3,1,3);plot(f_x-f_s/2,abs(fftshift(y_f); title(shift fft transform);也就是说,如果我们不使用fftshift,其变换后的横坐标为0:f_s/(N-1):f_s,如果使用 fftshift命令,0频率分量将会移到坐标中心,这也正是matlab中帮助中心给出的意思: 对fft的坐标进行了处理。实际上由于频谱的周期性,我们这样做是合理的,可以接受的。 请读者特别要注意横坐标的差别。另外,根据函数的特性,频谱应当只有在15Hz, 40Hz出 现峰值,但是fft变换后在60Hz,及85Hz处同样出现了峰值,应当可以从fft的计算过程 中得到相应的解释。
展开阅读全文