使用 Python 提取 Excel 数据特征信号:多项式拟合、白噪声滤除

本文将介绍如何使用 Python 从 Excel 表格中读取采样时间和输出电压数据,并利用多项式拟合、添加白噪声、设定阈值等方法提取特征信号。

代码实现

为了实现多项式拟合、加入白噪声、设定阈值以及剔除噪声信号,我们需要使用 pandasnumpymatplotlib 库。请确保你已经安装了这些库。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from numpy.polynomial import Polynomial

# 读取 Excel 文件并获取数据
data = pd.read_excel('your_file_path.xlsx')
time = data.iloc[:, 0].values
voltage = data.iloc[:, 1:5].values

# 绘制时域图
plt.figure(figsize=(10, 6))
plt.plot(time, voltage)
plt.xlabel('Time')
plt.ylabel('Voltage')
plt.title('Time Domain Plot')
plt.legend(['Voltage 1', 'Voltage 2', 'Voltage 3', 'Voltage 4'])
plt.grid(True)
plt.show()

# 多项式拟合
degree = 5  # 拟合多项式的次数
fit_params = []
for i in range(voltage.shape[1]):
    p = Polynomial.fit(time, voltage[:, i], degree)
    fit_params.append(p.convert().coef)

# 添加白噪声信号
noise = np.random.normal(0, 0.1, voltage.shape)
voltage_noise = voltage + noise

# 提取特征信号
threshold = 0.5  # 设定阈值
voltage_filtered = voltage_noise.copy()
for i in range(voltage_filtered.shape[1]):
    p = Polynomial.fit(time, voltage_noise[:, i], degree)
    fitted_signal = p(time)
    residual = np.abs(voltage_noise[:, i] - fitted_signal)
    voltage_filtered[residual < threshold, i] = fitted_signal[residual < threshold]

# 绘制提取后的时域图
plt.figure(figsize=(10, 6))
plt.plot(time, voltage_filtered)
plt.xlabel('Time')
plt.ylabel('Voltage')
plt.title('Extracted Time Domain Signal')
plt.legend(['Voltage 1', 'Voltage 2', 'Voltage 3', 'Voltage 4'])
plt.grid(True)
plt.show()

请将代码中的 your_file_path.xlsx 替换为你实际的 Excel 文件路径。代码将读取第一列作为采样时间,第 2 到第 5 列作为输出电压。

这段代码将首先绘制原始数据的时域图,然后使用多项式拟合方法拟合每个输出电压信号。接着,添加高斯白噪声信号,并设定阈值来剔除噪声信号。最后,绘制提取后的时域图。

希望这段代码能满足你的要求!如果有任何问题,请随时提问。

Python 提取 Excel 数据特征信号:多项式拟合、白噪声滤除

原文地址: http://www.cveoy.top/t/topic/b0Fa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录