You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Excel数据实现信号一、二、三阶离散导数计算及绘图需求

Python实现Excel数据的离散导数计算与可视化

1. 依赖库安装

首先安装所需的Python库,执行以下命令:

pip install pandas numpy matplotlib

2. 完整代码实现

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取目标Excel文件(替换为你的文件路径/文件名)
df = pd.read_excel('signal_data.xlsx')

# 提取A列(时间)和B列(幅值)数据
time = df.iloc[:, 0].values
magnitude = df.iloc[:, 1].values

# 计算各阶离散导数(基于非均匀时间间隔)
first_deriv = np.gradient(magnitude, time)
second_deriv = np.gradient(first_deriv, time)
third_deriv = np.gradient(second_deriv, time)

# 绘制所有曲线
plt.figure(figsize=(12, 10))

# 原始信号
plt.subplot(4, 1, 1)
plt.plot(time, magnitude, 'b-', linewidth=2)
plt.title('原始信号')
plt.ylabel('幅值')
plt.grid(True)

# 一阶导数
plt.subplot(4, 1, 2)
plt.plot(time, first_deriv, 'r-', linewidth=2)
plt.title('一阶离散导数')
plt.ylabel('d幅值/d时间')
plt.grid(True)

# 二阶导数
plt.subplot(4, 1, 3)
plt.plot(time, second_deriv, 'g-', linewidth=2)
plt.title('二阶离散导数')
plt.ylabel('d²幅值/d时间²')
plt.grid(True)

# 三阶导数
plt.subplot(4, 1, 4)
plt.plot(time, third_deriv, 'm-', linewidth=2)
plt.title('三阶离散导数')
plt.xlabel('时间')
plt.ylabel('d³幅值/d时间³')
plt.grid(True)

# 自动调整子图间距
plt.tight_layout()
plt.show()

3. 关键说明

  • Excel读取:使用pd.read_excel加载文件,iloc[:,0]和iloc[:,1]确保稳定读取A、B列,无需依赖列名。
  • 导数计算:np.gradient支持非均匀时间间隔的数值梯度计算,比简单差分更适合实际信号数据。
  • 可视化:通过子图布局同时展示原始信号与各阶导数,添加网格和标签提升可读性。

4. 测试示例数据

将你提供的示例数据保存为Excel文件(如signal_data.xlsx):

AB
0.11
0.4-3
1.28

运行代码即可得到对应的导数计算结果和可视化图像。

内容的提问来源于stack exchange,提问作者Oliver Gil Estrada Hernández

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:40:28