首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻尼正弦信号FFT

阻尼正弦信号FFT
EN

Stack Overflow用户
提问于 2018-10-11 19:23:48
回答 1查看 295关注 0票数 1

我在做一项课程信号分析的作业,在那里我必须分析一个信号。我已经尝试了很多东西,但仍然困扰我的是,FFT看起来很奇怪,而不像我们在课堂上学到的‘正常外观’FFT。

复值绝对值:FFT abs值 - FFT abs值放大

无绝对值:FFT放大

在上面的图像中看到的FFT在0-30 in的频率范围内被放大。其余的频率范围没有显示出很多(高)的峰值,这很可能是由噪音引起的。

该信号是在焊接过程中产生的,使用采样频率为1000 an的示波器。为了去除噪声,我对信号进行了滤波,然后利用MATLAB的fft函数将信号转换成频谱。

信号滤波前后:原始信号和滤波信号

我的一般问题是,所显示的FFT是有效的,还是我犯了一个错误?我估计地面频率在5.5Hz左右,当我接受一个大的正弦波时,我能说这句话吗?我还注意到,在一个(地面?)这是一种高谐波的波形吗?

如果我的理论是正确的,是什么导致fft是一个阻尼正弦形式?

我使用的代码基本上如下。我把噪音过滤掉了,因为我认为这个问题没有必要。数据集是由40100行组成的矩阵。

代码语言:javascript
复制
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')

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-12 03:47:44

您所看到的是正确的:您的信号是一个带有一些噪声的脉冲,而FFT基本上是一个sinc函数(或者您应该为FFT绘制它的一个sinc的abs ),这就是您对一个脉冲所期望的。

这是一个简单的演示。(顺便说一句,我使脉宽比你的窄一点,目的是使sinc变宽,这是因为宽度是反向相关的。这样我就不用放大了。)

代码语言:javascript
复制
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。这通常会有光谱性质,大部分远离低频率的正弦,但这可以取决于噪音的确切性质。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52767503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档