小耿成长记录第一天 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

基线校正——多项式拟合相关推荐

  1. 利用numpy对已知样本点进行多项式拟合

    0.导入相关包: import matplotlib.pyplot as plt import numpy as np 1.假设有如下样本点: #使用随机数产生样本点 x=[1,2,3,4,5,6,7 ...

  2. 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= ...

  3. NASA科学家联名求撤稿:金星有生命迹象是大乌龙,12阶多项式拟合不靠谱

    萧箫 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 还记得9月14号那篇"金星上有生命"的Nature子刊论文吗? 天文学家在金星"大气层"中观测 ...

  4. pytho作线性拟合、多项式拟合、对数拟合

    python opencv拟合: width是总宽,height是总高: [vx, vy, x, y] = cv2.fitLine(np.float32(values[j]), cv2.DIST_L2 ...

  5. java 多项式拟合最多的项数_牛顿插值法、曲线拟合、多项式拟合

    2020年10月4日研究了一下牛顿插值法,其用途是使用x.y两组数值,根据新的x值返回对应的y值,与TREND.FORECAST函数不同,这种方法可应对非线性数据.其作用类似于图表中的曲线拟合或LIN ...

  6. matlab的多项式拟合,函数求导,画函数曲线

    给一列数据. 拟合出该数据的函数曲线.多项式拟合. 然后画出函数曲线来.以及给出函数形式. 求导. 再画出导数的曲线.以及给出导数函数形式. matlab代码: clc close all clear ...

  7. java 多项式拟合最多的项数_机器学习(1)--线性回归和多项式拟合

    机器学习(1)--线性回归和多项式拟合 机器学习(2)逻辑回归 (数学推导及代码实现) 机器学习(3)softmax实现Fashion-MNIST分类 一 线性回归 线性回归,顾名思义是利用线性模型对 ...

  8. 多项式拟合缺点_曲线拟合方法的选择

    曲线拟合方法的选择 目    录 摘要 1 前言 2 1 问题提出 3 2 插值介绍 4 2.1拉格朗日公式求解 4 2.1.1 算法分析 5 2.1.2 程序设计 5 2.1.3 计算结果 8 2. ...

  9. matlab练习程序(最小二乘多项式拟合)

    最近在分析一些数据,就是数据拟合的一些事情,用到了matlab的polyfit函数,效果不错. 因此想了解一下这个多项式具体是如何拟合出来的,所以就搜了相关资料. 这个文档介绍的还不错,我估计任何一本 ...

最新文章

  1. Nginx负载均衡和反向代理
  2. Flash学习笔记(01)
  3. Java静态类使用 使用 service
  4. 你真的了解iOS怎么取属性的吗?
  5. sql server 加密_列级SQL Server加密概述
  6. 微服务架构实战(五):选择微服务部署策略
  7. 搭建nfs共享存储服务之三客户端配置
  8. Linux入门——开机启动过程浅析
  9. 红蜘蛛多媒体网络教室v7.2版一款网络教学的软件_我是亲民_新浪博客
  10. Android APP功能测试(个人总结完整版)
  11. 使用Python模拟鼠标操作
  12. 70.(cesium篇)cesium接入天地图影像与注记(经纬度)
  13. if、else、else if使用方法
  14. 【第三方互联】微博2、创建新浪微博(sina)互联应用
  15. Echarts源码修改
  16. 云服务器选ssd还是hdd_服务器租用主机硬盘使用机械硬盘还是固态硬盘
  17. Python创建文件夹和子文件夹
  18. 轻松理解MySQL的MVCC机制
  19. SQL笔试题:某团数分岗笔试真题详解
  20. 应届生面试要点总结(10)操作系统相关

热门文章

  1. centos挂载u盘只读_解决CentOS自动挂载U盘/SD Card被识别为只读文件系统
  2. MATLAB学习之符号运算
  3. 计算机专业英语辅音字母缩略,英语缩写规则
  4. c语言怎么返回数组,c++从函数返回数组的方法代码
  5. python关于图像去雾
  6. 从软件工程师到IT猎头:说说跳槽那点事
  7. linux c++ 文件修改时间,linux下C获取系统时间的方法
  8. 好用的数据恢复软件EasyRecovery2023最新版
  9. js如何将字符串转化为大写
  10. Java——File(文件)