data smoothing

本文探讨了如何进行数据平滑处理并计算线性梯度的方法。通过介绍数据平滑的多种方式,帮助读者理解如何减少数据噪声及计算趋势线。此外,还提供了实际应用中的案例分析和技术建议。

Mail about data smoothing

 

http://stackoverflow.com/questions/204184/how-to-smooth-data-and-calculate-line-gradient

 

import pandas as pd import numpy as np from scipy.signal import find_peaks import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 读取文件 excel_file = pd.ExcelFile('附件1.xlsx') # 获取指定工作表中的数据 df = excel_file.parse('Sheet1') data = df['B'].values def first_order_lowpass_filter(input_signal, alpha): output_signal = np.zeros_like(input_signal) output_signal[0] = input_signal[0] for i in range(1, len(input_signal)): output_signal[i] = alpha * input_signal[i] + (1 - alpha) * output_signal[i - 1] return output_signal # 设定低通滤波器的参数 alpha = 0.2 filtered_data = first_order_lowpass_filter(data, alpha) def detect_peaks_and_valleys(data): peaks, _ = find_peaks(data) valleys, _ = find_peaks(-data) return peaks, valleys # 检测波峰波谷 peaks, valleys = detect_peaks_and_valleys(filtered_data) def polynomial_fit(data, peaks, valleys, order): all_points = np.sort(np.concatenate((peaks, valleys))) x = all_points y = data[all_points] coefficients = np.polyfit(x, y, order) polynomial = np.poly1d(coefficients) fitted_data = polynomial(np.arange(len(data))) return fitted_data # 设定多项式阶数 order = 3 fitted_data = polynomial_fit(filtered_data, peaks, valleys, order) plt.figure(figsize=(12, 6)) plt.plot(data, label='Original Data') plt.plot(filtered_data, label='Filtered Data') plt.plot(fitted_data, label='Fitted Data') plt.legend() plt.title('Data Smoothing and Fitting') plt.xlabel('Index') plt.ylabel('Value') plt.show() 修改代码,变为提取指定区间的数据
最新发布
09-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值