频谱分析
离散傅里叶变换MATLAB程序运行结果离散傅里叶变换
离散傅里叶变换(DFT)是傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在频域的采样。在实际应用中通常采用快速傅里叶变换(FFT)以高效计算DFT。
DFT的定义为:
其中N为DFT的点数,点数越大频率分辨率越高,k=0,1,2,…,N-1。
离散傅里叶变换可以看做是离散时域信号与不同频率的离散正弦信号进行相关运算得到相应的频率对应的幅值(复数)。
MATLAB程序
clcclearclose allN=2048;% ADC采样点数Fs=1e6;% ADC采样率t=(0:N-1)/Fs;% 采样时间序列F1=60e3;% 信号频率1F2=80e3;% 信号频率2signal = cos(2*pi*F1 * t) + cos(2*pi*F2 * t);figure;plot(t,signal);axis([0 inf -2.2 2.2]);xlabel('时间/s');title('时域信号');% FFTNN=2048;% NN点DFTXN=fft(signal,NN)/NN;% 计算signal的NN点快速傅里叶变换f0=Fs/NN; % 频率分辨率f=(0:NN-1)*f0; % 频率序列fk=(0:NN-1); % 谱线序列A=abs(XN);% 幅值序列Phase=atan(-real(XN)./imag(XN))/pi*180; % 相位序列figure;subplot(2,1,1);plot(f(1:NN/2),A(1:NN/2));xlabel('频率/Hz');ylabel('幅度');% axis([50e3 90e3 0 inf]);title('FFT幅频谱');subplot(2,1,2);plot(f(1:NN/2),Phase(1:NN/2));xlabel('频率/Hz');ylabel('相位/°');title('FFT相频谱');figure;subplot(2,1,1);plot(f(1:NN/2),real(XN(1:NN/2)));xlabel('频率/Hz');title('频谱实部');subplot(2,1,2);plot(f(1:NN/2),imag(XN(1:NN/2)));xlabel('频率/Hz');title('频谱虚部');
运行结果
如果觉得《数字信号处理(1)- 频谱分析》对你有帮助,请点赞、收藏,并留下你的观点哦!