Matlab中的FFT图

时间:2014-03-05 10:50:38

标签: matlab fft

我有一个来自信号发生器的60Hz正弦波的小输入信号,它被50Hz主电源频率损坏。我想用FFT测量60Hz信号的幅度,因为它在示波器中很小 Matlab FFT代码:

y = data;    
Fs = 2048;
[r, L] = size(y);
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1))) 

但FFT图在50和60Hz时没有出现尖峰。情节如下:

连续点具有高和低幅度,或者给出锯齿状图。为什么会这样? 60Hz的幅度是否受此影响?

2 个答案:

答案 0 :(得分:0)

可能有两种效果

  1. 如果测量信号的时间窗口,则不可避免地导致信号模式的开始和终点之间的相位差。间隙或矩形信号的FFT引起高频振荡。由于窗口功能可以抑制由边界效应引起的这些振荡,这会使信号平滑到边界。

  2. DFT中存在离散频谱。如果测量的信号与任何这些离散模式都不匹配,则需要更多的频率来重建原始信号。

答案 1 :(得分:0)

您的50 Hz信号可能不是纯正的正弦波。与完美正弦波(例如削波或失真)的任何差异等同于将在频谱中产生边带的调制。

窗口化周期不是FFT长度的精确子数的信号也会将窗口伪像与该信号进行卷积。