FFT算法坐标轴优化:
对于MATLAB离散处理信号频域分析,我们一般会使用FFT,及快速傅里叶算法来实现,但是实际使用时需要对
坐标轴以及幅值进行调整,以使绘出的频谱图更具有直观性,下面给出个人习惯用的代码如下:
function [ ] = fftplot(hObject, eventdata, handles,h, x, Fs )
%x:输入信 h:所绘制的画板句柄Fs:采样频率
L = length(x);
NFFT = 2^nextpow2(L); %确定FFT变换的长度
y = fft(x, NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1); %频率向量
axes(h); %指定画板
plot(f, 2*abs(y(1:NFFT/2+1))); %绘制频域图像
grid on;
title(频谱图');
xlabel('Frequency (Hz)');
ylabel('|y(f)|');
由于这个是个人在GUI中使用的,因此有hObject, eventdata, handles这三个参数,具体GUI使用可以看附件
NFFT = 2^nextpow2(L); 这一步就是将FFT点数调整至2的幂次方,来基2算法来加快FFT速度
y = fft(x, NFFT)/L;除以L是为了调整幅值,使其与实际幅值一致