我在做一项课程信号分析的作业,在那里我必须分析一个信号。我已经尝试了很多东西,但仍然困扰我的是,FFT看起来很奇怪,而不像我们在课堂上学到的‘正常外观’FFT。
复值绝对值:FFT abs值 - FFT abs值放大
无绝对值:FFT放大
在上面的图像中看到的FFT在0-30 in的频率范围内被放大。其余的频率范围没有显示出很多(高)的峰值,这很可能是由噪音引起的。
该信号是在焊接过程中产生的,使用采样频率为1000 an的示波器。为了去除噪声,我对信号进行了滤波,然后利用MATLAB的fft函数将信号转换成频谱。
信号滤波前后:原始信号和滤波信号
我的一般问题是,所显示的FFT是有效的,还是我犯了一个错误?我估计地面频率在5.5Hz左右,当我接受一个大的正弦波时,我能说这句话吗?我还注意到,在一个(地面?)这是一种高谐波的波形吗?
如果我的理论是正确的,是什么导致fft是一个阻尼正弦形式?
我使用的代码基本上如下。我把噪音过滤掉了,因为我认为这个问题没有必要。数据集是由40100行组成的矩阵。
fs = 1000;
cleanSignaal = data(:,4);
fftSignal = fft(cleanSignaal)/lenght(cleanSignaal);
f = fs/(2*length(fftSignal)):fs/length(fftSignal):fs;
plot(f,abs(fftSignal));
xlim([0 fs(m)/2]);
title('Fast Fourier Transform')
xlabel('Frequentie (Hz)')
ylabel('Magnitude')谢谢!
发布于 2018-10-12 03:47:44
您所看到的是正确的:您的信号是一个带有一些噪声的脉冲,而FFT基本上是一个sinc函数(或者您应该为FFT绘制它的一个sinc的abs ),这就是您对一个脉冲所期望的。
这是一个简单的演示。(顺便说一句,我使脉宽比你的窄一点,目的是使sinc变宽,这是因为宽度是反向相关的。这样我就不用放大了。)

import numpy as np
import matplotlib.pyplot as plt # For ploting
N = 1000
t = np.linspace(0, 1., N)
y = ( (t>0.46) & (t<0.54)).astype(float)
f = np.abs(np.fft.rfft(y))
faxis = np.fft.rfftfreq(y.size, 1./N)
plt.figure()
plt.subplot(211)
plt.plot(t, y)
plt.ylim(-.1, 1.1)
plt.subplot(212)
plt.plot(faxis, f)
plt.ylim(0, 90)
plt.show()在脉冲的顶部,你有很多尖峰噪声,这是加到FFT。这通常会有光谱性质,大部分远离低频率的正弦,但这可以取决于噪音的确切性质。
https://stackoverflow.com/questions/52767503
复制相似问题