如何用MATLAB实现快速傅立叶变换FFT?

2025-10-04 14:07:36

1、读入时域采集信号,定义采样频率,计算信号点数量,生成采样时间点

clear;clc;close all

load('example')

Fs=2500;

T=1/Fs;

N=length(y);

t=(0:1:N-1)*T;

t=t';

2、绘制时域信号图形

figure

plot(t,y)

3、使用MATLAB自带的fft函数,对信号做傅里叶变换,注意:频谱的前半部分为有效谱图

Y=fft(y);

Y=Y(1:N/2+1);

A=abs(Y);

f=(0:1:N/2)*Fs/N;

f=f';

1、对原始频谱的幅值就行修正,才能将频域的幅值与时域信号的幅值对应上

A_adj=zeros(N/2+1,1);

A_adj(1)=A(1)/N;

A_adj(end)=A(end)/N;

A_adj(2:end-1)=2*A(2:end-1)/N;

2、绘制幅频特性图

figure

subplot(2,1,1)

plot(f,A_adj)

3、绘制相频特性图

subplot(2,1,2)

phase_angle=angle(Y);

phase_angle=rad2deg(phase_angle);

plot(f,phase_angle)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢