fft运算后需要对幅值乘2除N(变换的点数)的说明(Matlab)

您所在的位置:网站首页 为何值需要 fft运算后需要对幅值乘2除N(变换的点数)的说明(Matlab)

fft运算后需要对幅值乘2除N(变换的点数)的说明(Matlab)

2024-07-12 11:26| 来源: 网络整理| 查看: 265

原文:http://blog.sina.com.cn/s/blog_818aa1b90102vgor.html 为什么matlab中的fft运算后想要得到信号的幅值需要对运算结果的幅值进行乘2除N 对于一个时域信号x(t),采样频率为Fs,信号频率F,采样点数为N,进行N采样后为y[n],则fft(y,N)计算所得的结果就是一个为N点的复数a+bi. 每一个点就对应着一个频率点.这个点的模值,就是该频率值下的幅度特性. 得到的频率点与相应点处的模值与原始信号的频率和幅度有什么关系? 1.频率点:实际信号第n点处的频率是nFs/N 2.幅度:第n(其中n!=1)点处的fft计算的结果是复数a+bi,模值A=sqrt(a2+b2),那么实际信号的幅度是2A/N; 当n=0时(0Hz),第一个点就是直流分量,它的模值就是直流分量的N倍,那么实际信号的幅度是A/N,注意N是采样点而不是进行FFT的点数 3.相位:每个点处的相位就是该频率下信号的相位。

matlab自带的fft例程详解:

Fs = 1000; % Sampling frequency T = 1/Fs; % Sample time L = 1000; % Length of signal t = (0:L-1)T; % Time vector % Sum of a 50 Hz sinusoid and a 120 Hz sinusoid x = 0.7sin(2pi50t) + sin(2pi120t); y = x + 2randn(size(t)); % Sinusoids plus noise增加的是一个1000点的随机噪声 plot(Fst(1:50),y(1:50)) % 绘制时域信号图,取前50点 title(‘Signal Corrupted with Zero-Mean Random Noise’) xlabel(‘time (milliseconds)’) NFFT = 2^nextpow2(L); % 主要用于计算L点最近的2的整数次幂的点数,此处采样为1000点,离它最近的是1024,所以NFFT是1024 Y = fft(y,NFFT)/L; %Y是复数矩阵,已经在此处除以L了,注意除的是L不是NFFT f = Fs/2*linspace(0,1,NFFT/2+1);%频率分辨率矩阵,linspace将0-1平均分成NFFT/2份 % Plot single-sided amplitude spectrum. plot(f,2*abs(Y(1:NFFT/2+1))) �s计算模值,前面已经除以L了,此处绘图时候仅乘以2,这样绘制的频谱图就是时域信号对应频率点的真实幅值 title(‘Single-Sided Amplitude Spectrum of y(t)’) xlabel(‘Frequency (Hz)’) ylabel(’|Y(f)|’)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3