信用中国网站建设,盐城seo优化,微信登录建设银行网站,做微网站的第三方登录三维荧光#xff0c;组分荷载图优化处理。 适用于组分图和荷载图锯齿较多且图不美观情形。 图2为处理后#xff0c;图1为处理前。三维荧光数据的可视化常常会遇到这样的尴尬#xff1a;明明实验数据挺漂亮#xff0c;画出来的组分荷载图却像心电图似的#xff0c;毛边多到…三维荧光组分荷载图优化处理。 适用于组分图和荷载图锯齿较多且图不美观情形。 图2为处理后图1为处理前。三维荧光数据的可视化常常会遇到这样的尴尬明明实验数据挺漂亮画出来的组分荷载图却像心电图似的毛边多到让人怀疑人生。这种情况多半是数据采样间隔过密或者噪声干扰导致的。最近在帮实验室处理一批发酵过程监测数据时就遇到了这种让人头秃的锯齿图图1处理后的效果见图2。先看原始数据的问题症结。当荧光强度变化剧烈时相邻采样点的突变会产生视觉上的割裂感。这时候直接上平滑滤波容易丢失特征峰简单的插值又会引入虚假信号。我们的解决方案是把移动窗口算法和局部多项式拟合结合起来核心代码其实就几行from scipy.signal import savgol_filter def smooth_loading(loading_data, window_size21, poly_order3): 针对一维荷载数据的自适应平滑 :param window_size: 滑动窗口长度建议奇数 :param poly_order: 多项式阶数别超过窗口长度 :return: 平滑后的荷载曲线 if window_size % 2 0: window_size 1 # 确保窗口长度为奇数 return savgol_filter(loading_data, window_size, poly_order)这里用到了Savitzky-Golay滤波器这个算法的聪明之处在于用局部多项式拟合来保持信号特征。比如窗口设为21个数据点相当于在局部范围内用三次多项式来近似曲线走势。实测中发现当原始数据的采样间隔是2nm时窗口大小设置在17-25之间效果最佳既能吃掉毛刺又不至于抹平特征峰。三维荧光组分荷载图优化处理。 适用于组分图和荷载图锯齿较多且图不美观情形。 图2为处理后图1为处理前。不过直接应用会遇到边界问题——处理后的曲线两端容易翘起来。这时候需要做个边界扩展的小把戏import numpy as np from scipy.ndimage import median_filter def boundary_pad(data, pad_width10): 镜像对称扩展边界防止边缘效应 left_pad np.flip(data[:pad_width]) right_pad np.flip(data[-pad_width:]) return np.concatenate([left_pad, data, right_pad]) smoothed smooth_loading(boundary_pad(raw_data))[10:-10]先给数据头尾各加10个镜像对称点处理完再把扩展部分切掉。这种操作比直接补零更符合光谱数据的连续性特点。配合中值滤波预处理效果更佳比如在特别毛躁的区域先用median_filter去离群点preprocessed median_filter(raw_data, size3)处理后的荷载图图2肉眼可见顺滑了许多但要注意别过头。有个经验公式窗口长度应该大于特征峰半高宽的两倍。如果发现某个峰被压扁了试着把poly_order从3降到2或者微调窗口尺寸。毕竟优化是为了更好地展示数据特征而不是把曲线变成橡皮泥随便捏。最后放个对比代码片段方便大家自己调整参数import matplotlib.pyplot as plt plt.figure(figsize(10,4)) plt.subplot(121) plt.title(Raw data) plt.plot(raw_data, lw1, c#1f77b4) plt.subplot(122) plt.title(Smoothed) plt.plot(smoothed, lw1.5, c#ff7f0e) plt.show()记住所有参数调整都要以原始数据为基准处理后的曲线如果和原始趋势出现系统性偏移那肯定是哪个步骤玩脱了。好的优化应该像化妆——提升颜值但不改变五官位置。