鱼C论坛

 找回密码
 立即注册
查看: 1351|回复: 1

[已解决]基于python对正弦信号进行FFT分析的程序怎么写,对信号校正,数字滤波,时域分析

[复制链接]
发表于 2023-9-14 23:11:41 | 显示全部楼层 |阅读模式
4鱼币
求助,基于python对正弦信号进行FFT分析的程序怎么写呀,还有对信号进行校正,数字滤波,时域分析
最佳答案
2023-9-14 23:11:42
对于正弦信号的FFT分析,可以使用Python中的numpy.fft库。以下是一个简单的代码示例:
import numpy as np
import matplotlib.pyplot as plt

# 生成正弦信号
fs = 1000  # 采样率
t = np.arange(0, 1, 1/fs)  # 时间序列
f = 10  # 正弦波频率
x = np.sin(2*np.pi*f*t)  # 正弦信号

# 进行FFT分析
X = np.fft.fft(x)  # FFT变换
freqs = np.fft.fftfreq(len(x), 1/fs)  # 变换后的频率序列

# 绘制幅度谱
plt.plot(freqs, np.abs(X))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.show()

对于信号校正和数字滤波,可以使用scipy库中的信号处理模块。以下是一个简单的代码示例:
from scipy import signal

# 生成含噪声的正弦信号
x = np.sin(2*np.pi*f*t) + 0.5*np.random.randn(len(t))

# 信号校正
x_corrected = signal.detrend(x)

# 数字滤波
b, a = signal.butter(4, 2*f/fs, 'lowpass')  # 4阶低通滤波器
x_filtered = signal.filtfilt(b, a, x_corrected)

# 绘制时域图像
plt.plot(t, x, label='Original Signal')
plt.plot(t, x_corrected, label='Corrected Signal')
plt.plot(t, x_filtered, label='Filtered Signal')
plt.legend()
plt.show()

以上代码中,通过signal.detrend()函数进行信号校正,通过signal.butter()函数设计4阶低通滤波器,并通过signal.filtfilt()函数进行滤波处理,最后通过绘制时域图像进行结果展示。

最佳答案

查看完整内容

对于正弦信号的FFT分析,可以使用Python中的numpy.fft库。以下是一个简单的代码示例: 对于信号校正和数字滤波,可以使用scipy库中的信号处理模块。以下是一个简单的代码示例: 以上代码中,通过signal.detrend()函数进行信号校正,通过signal.butter()函数设计4阶低通滤波器,并通过signal.filtfilt()函数进行滤波处理,最后通过绘制时域图像进行结果展示。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-14 23:11:42 | 显示全部楼层    本楼为最佳答案   
对于正弦信号的FFT分析,可以使用Python中的numpy.fft库。以下是一个简单的代码示例:
import numpy as np
import matplotlib.pyplot as plt

# 生成正弦信号
fs = 1000  # 采样率
t = np.arange(0, 1, 1/fs)  # 时间序列
f = 10  # 正弦波频率
x = np.sin(2*np.pi*f*t)  # 正弦信号

# 进行FFT分析
X = np.fft.fft(x)  # FFT变换
freqs = np.fft.fftfreq(len(x), 1/fs)  # 变换后的频率序列

# 绘制幅度谱
plt.plot(freqs, np.abs(X))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.show()

对于信号校正和数字滤波,可以使用scipy库中的信号处理模块。以下是一个简单的代码示例:
from scipy import signal

# 生成含噪声的正弦信号
x = np.sin(2*np.pi*f*t) + 0.5*np.random.randn(len(t))

# 信号校正
x_corrected = signal.detrend(x)

# 数字滤波
b, a = signal.butter(4, 2*f/fs, 'lowpass')  # 4阶低通滤波器
x_filtered = signal.filtfilt(b, a, x_corrected)

# 绘制时域图像
plt.plot(t, x, label='Original Signal')
plt.plot(t, x_corrected, label='Corrected Signal')
plt.plot(t, x_filtered, label='Filtered Signal')
plt.legend()
plt.show()

以上代码中,通过signal.detrend()函数进行信号校正,通过signal.butter()函数设计4阶低通滤波器,并通过signal.filtfilt()函数进行滤波处理,最后通过绘制时域图像进行结果展示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-25 14:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表