基线校正——多项式拟合
小耿成长记录第一天 | 0106 |
---|---|
拉曼光谱数据处理学习 | 读文献记录第一天 |
由于荧光背景、样品及周围环境的黑体辐射等影响,导致光谱的基线产生,其表现为缓慢变化曲线,直接对后续的数据分析产生影响。因此需要在后续处理之前将谱线中的基线消除。
分三步:
① 峰值消除;
② 多项式拟合逼近基线,得到基线;
③ 减去基线,得到基线校正后的光谱数据。
其中,拟合残差计算公式如下:
式中O(x)为原始光谱,P(x)为拟合光谱,DEV为残差。
残差判断条件如下:
If i=1,判断条件为abs(DEV1-DEV)/DEV1<0.05;
else,判断条件为abs(DEVi-DEVi-1)/DEVi<0.05;
原文链接:https://blog.csdn.net/dongke1991/article/details/123802799
常用的基线校正算法有分段线性拟合法、局部极值中值法、多项式拟合法。
%读取该目录下的所有txt文件
% 读取后file_list 的属性有
% name -- file_name
%通过字符串拼接,获取绝对路径可以直接用[],也可以用strcat()函数
clear;clc;
path1 = 'C:\Users\Gmy\Desktop\光谱\2\';
file_list1 = dir([path1,'*.txt']);
file_name1 = sort({file_list1.name});
len1 = length(file_list1);
filename1 = cell(1,len1);
text1 = cell(1,len1);
for i = 1:len1filename1{i} = [path1,file_name1{i}];%通过字符串拼接获得的就是绝对路径了text1{i} = load(filename1{i});
end
figure(1)
for i=1:1figurex = text1{i}(:,1);y1 = text1{i}(:,2);plot(x,y1);title('拉曼光谱图')xlabel('拉曼位移')ylabel('拉曼强度')y = sgolayfilt(y1,5,7)
%%
% x=[];%拉曼位移
% y=[];%原始光谱
n=5;%多项式阶数
[p0,s0,mu0]=polyfit(x,y,n);%多项式拟合
y_fit0=polyval(p0,x,[],mu0);%计算拟合值
r0=y-y_fit0;
dev0=sqrt(sum((r0-mean(r0)).^2)/length(r0));%计算残差
y_remove0=y(find(y<=y_fit0));%峰值消除
x_remove0=x(find(y<=y_fit0));%峰值消除
i=1;
judge=1;
while(judge)
[p1,s1,mu1]=polyfit(x_remove0,y_remove0,n);%多项式拟合
y_fit1=polyval(p1,x_remove0,[],mu1);%计算拟合值
r1=y_remove0-y_fit1;
dev(i)=sqrt(sum((r1-mean(r1)).^2)/length(r1));%计算残差
if i==1judge=abs(dev(i)-dev0)/dev(i)>0.05;
elsejudge=abs((dev(i)-dev(i-1))/dev(i))>0.05;%残差判断条件
end
index=find(y_remove0<=y_fit1);
y_remove0(index)=y_fit1(index);%光谱重建,大于拟合值的数据用拟合值代替,小于拟合值的数组采用原始数据
i=i+1
end
y_baseline=polyval(p1,x,[],mu1);%基线
y_baseline_correction=y-y_baseline;%基线校正后
figure(1)
h=plot(x,y,'b',x,y_baseline,'m',x,y_baseline_correction,'r')
set(h,'Linewidth',1,'Markersize',1)%设置线宽和点的大小
title('基线校正效果','fontsize',20)%图形标题
xlabel('波数','fontsize',10)%x轴名称
ylabel('幅值','fontsize',10)%y轴名称
grid on %打开网格线
legend('原始光谱','基线','基线校正后的光谱')%添加图例
axis tighthold on
end
hold off
基线校正——多项式拟合相关推荐
- 利用numpy对已知样本点进行多项式拟合
0.导入相关包: import matplotlib.pyplot as plt import numpy as np 1.假设有如下样本点: #使用随机数产生样本点 x=[1,2,3,4,5,6,7 ...
- matlab 多项式拟合 ployval
多项式拟合 ployval clc,clear; x=[19 25 31 38 44]'; y=[19.0 32.3 49.0 73.3 97.8]'; r=[ones(5,1),x.^2]; ab= ...
- NASA科学家联名求撤稿:金星有生命迹象是大乌龙,12阶多项式拟合不靠谱
萧箫 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 还记得9月14号那篇"金星上有生命"的Nature子刊论文吗? 天文学家在金星"大气层"中观测 ...
- pytho作线性拟合、多项式拟合、对数拟合
python opencv拟合: width是总宽,height是总高: [vx, vy, x, y] = cv2.fitLine(np.float32(values[j]), cv2.DIST_L2 ...
- java 多项式拟合最多的项数_牛顿插值法、曲线拟合、多项式拟合
2020年10月4日研究了一下牛顿插值法,其用途是使用x.y两组数值,根据新的x值返回对应的y值,与TREND.FORECAST函数不同,这种方法可应对非线性数据.其作用类似于图表中的曲线拟合或LIN ...
- matlab的多项式拟合,函数求导,画函数曲线
给一列数据. 拟合出该数据的函数曲线.多项式拟合. 然后画出函数曲线来.以及给出函数形式. 求导. 再画出导数的曲线.以及给出导数函数形式. matlab代码: clc close all clear ...
- java 多项式拟合最多的项数_机器学习(1)--线性回归和多项式拟合
机器学习(1)--线性回归和多项式拟合 机器学习(2)逻辑回归 (数学推导及代码实现) 机器学习(3)softmax实现Fashion-MNIST分类 一 线性回归 线性回归,顾名思义是利用线性模型对 ...
- 多项式拟合缺点_曲线拟合方法的选择
曲线拟合方法的选择 目 录 摘要 1 前言 2 1 问题提出 3 2 插值介绍 4 2.1拉格朗日公式求解 4 2.1.1 算法分析 5 2.1.2 程序设计 5 2.1.3 计算结果 8 2. ...
- matlab练习程序(最小二乘多项式拟合)
最近在分析一些数据,就是数据拟合的一些事情,用到了matlab的polyfit函数,效果不错. 因此想了解一下这个多项式具体是如何拟合出来的,所以就搜了相关资料. 这个文档介绍的还不错,我估计任何一本 ...
最新文章
- Nginx负载均衡和反向代理
- Flash学习笔记(01)
- Java静态类使用 使用 service
- 你真的了解iOS怎么取属性的吗?
- sql server 加密_列级SQL Server加密概述
- 微服务架构实战(五):选择微服务部署策略
- 搭建nfs共享存储服务之三客户端配置
- Linux入门——开机启动过程浅析
- 红蜘蛛多媒体网络教室v7.2版一款网络教学的软件_我是亲民_新浪博客
- Android APP功能测试(个人总结完整版)
- 使用Python模拟鼠标操作
- 70.(cesium篇)cesium接入天地图影像与注记(经纬度)
- if、else、else if使用方法
- 【第三方互联】微博2、创建新浪微博(sina)互联应用
- Echarts源码修改
- 云服务器选ssd还是hdd_服务器租用主机硬盘使用机械硬盘还是固态硬盘
- Python创建文件夹和子文件夹
- 轻松理解MySQL的MVCC机制
- SQL笔试题:某团数分岗笔试真题详解
- 应届生面试要点总结(10)操作系统相关