别再被频谱图搞晕了!用Python的Scipy库5分钟搞定信号功率谱分析(附Welch和CSD代码)

别再被频谱图搞晕了!用Python的Scipy库5分钟搞定信号功率谱分析(附Welch和CSD代码)

第一次看到频谱图时,那些起伏的曲线和密集的频率刻度让我头皮发麻。直到在实验室里导师扔给我一段Python代码:"用这个分析你的振动数据,比公式直观多了。"三行 scipy.signal.welch() 调用就输出了清晰的功率谱——那一刻我才明白,现代信号处理早已不是纸笔推演的时代。

对于需要快速分析噪声特征、设备振动或生物信号的工程师和学生,功率谱密度(PSD)是揭示信号频率成分的利器。但传统教材往往陷于傅里叶变换的数学推导,而实际工作中我们更关心:如何用代码快速获得可信的频谱?怎样设置参数才能避免频谱泄露?两个信号的相干性如何量化?本文将用 完全可复现的代码示例 带你绕过理论沼泽,直击APSD(自功率谱)和CPSD(互功率谱)的实战要点。

1. 五分钟上手指南:从数据到频谱

假设你刚拿到一组工业传感器的振动数据,需要立即评估其主要频率成分。打开Jupyter Notebook,跟着以下步骤操作:

# 基础分析套件
import numpy as np
from scipy.signal import welch
import matplotlib.pyplot as plt

# 生成模拟信号(实际替换为你的数据)
fs = 1000  # 采样率1000Hz
t = np.arange(0, 5, 1/fs)  # 5秒时长
signal = 0.6 * np.sin(2*np.pi*50*t) + 0.3 * np.sin(2*np.pi*120*t)  # 50Hz+120Hz复合信号

# 关键参数设置
nperseg = 1024  # 每个分析段长度
noverlap = 512   # 段间重叠样本数

# 计算功率谱
freqs, psd = welch(signal, fs=fs, nperseg=nperseg, noverlap=noverlap)

# 可视化
plt.figure(figsize=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值