%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%对原始数据进行基线矫正
%通过矫正,使起始时刻后一大段时间,与结束时刻前一大段时间,基本保持在一个基准线上
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 系统清除
clear;
clf;                                                      %清除当前窗口
clc;
%% 获得需要矫正的原始数据+对应的时间轴
ORIG=dlmread('D:\Backup\我的文档\MATLAB\shujuchuli_2018_7_16\mubanyangben_2018_7_16\DISm.txt',' ');     %获得原始数据(原始数据为列向量)
%行向量t
t=1:length(ORIG);   %数据的横坐标为时间点,对应到原始数据的长度,设置为:1/2/3/4/5...length(原始数据)%原始数据,在此用形参ORIG表示
t=t';   %转换成与原始数据相同的列向量形式%% 利用polyfit函数,对原始数据进行曲线拟合
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数命令为:a=polyfit(x,y,m)    % x,y为对应的自变量,m为需要拟合的最高次幂
%           y=polyval(a,x);      %根据拟合的函数得出x对应的因变量的值
%函数表达形式为:f(x)=a1*x^m+...+am*x+a_m+1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%此处时间点t,原始数据ORIG对应为自变量,为了保证原始数据的绝大部分特征,只进行1次幂的拟合,即m=1
[p,s,mu] = polyfit(t,ORIG,1);   %p为幂次从高到低的多项式系数向量,矩阵s用于生成预测值的误差估计
f_x = polyval(p,t,[],mu);   %返回对应自变量t在给定系数p的多项式的值
dt_x = ORIG-f_x;   %获得基线在0处的,基线矫正后的数据plot(t,dt_x,'b-');   %用蓝色线段画出基线在0处的,矫正后的数据
%% 将基线在0处的矫正后的数据迁移回原始数据附近(最终的目的相当于只在原始数据附近进行了基线矫正)
ZX = mean(f_x);   %获得多项式值序列的均值%基线在0处的,基线矫正后的数据与原始数据对应时间点,在纵坐标上差异(迁移)的均值
dt_y = dt_x+ZX;   %将基线在0处的矫正后的数据整体迁移回原始数据附近%在同一个figure中画出原始数据以及矫正后的数据的图像,便于观察矫正效果
figure()
plot(t,ORIG,'k*');   %用黑色※号线画出原始数据
hold on;
plot(t,dt_y,'r-');   %用红色线段画出基线在原始数据附近的,矫正后的数据
hold off;
%% 获得原始数据拟合曲线的函数表达式(m次幂) [此处为1次]
disp(char(['ORIG=',poly2str(p,'t')],['a=',num2str(p(1)), 'b=',num2str(p(2))]));   %获得原始数据拟合曲线的函数表达式,以及各次幂的系数
%disp(char(['ORIG=',poly2str(p,'t')],['a=',num2str(p(1)), 'b=',num2str(p(2)), 'c=',num2str(p(3)), ..........'w=',num2str(p(m))]));   %获得原始数据拟合曲线的函数表达式,以及m个各次幂的系数

以上程序是我在处理数据时,自己根据需要处理的数据,编辑/修改的程序,不足之处多多谅解,大家互相交流学习。

用蓝色线段画出的基线在0处的矫正后的数据 黑色*号线画出的原始数据+红色线段画出的基线在原始数据附近的矫正后的数据

对前后两段基线漂移进行了矫正,保证了核心(中间凸起)部分的基本不变,实现了需要的基线矫正功能。

%%程序中的DISm.txt在https://download.csdn.net/download/jiliangdahe/10549876

使用时按照自己的需求修改相应的路径,将原始数据DISm.txt中的数据正确读入即可。

祝大家好运!!!!!

matlab 利用polyfitpolyval函数进行基线矫正【matlab程序】相关推荐

  1. matlab pup,matlab利用bar函数画不同颜色直方图

    matlab利用bar函数画直方图,参考文献[1]是matlab官方提供的help文档.里面提供了bar函数的基本用法,但是没有说明如何在同一张图中,为每个bar设置不同的颜色. 例子代码: myda ...

  2. matlab利用bar函数画不同颜色直方图

    matlab利用bar函数画直方图,参考文献[1]是matlab官方提供的help文档.里面提供了bar函数的基本用法,但是没有说明如何在同一张图中,为每个bar设置不同的颜色. 例子代码: myda ...

  3. 遍历图像 找最小外接矩形 matlab,2018a版本MatLab利用regionprops函数获取图片中物体轮廓最小外接矩形...

    2018a版本MatLab利用regionprops函数获取图片中物体最小外接矩形 本次内容,用于介绍利用matlab中的regionprops函数来获取图像区域中的物体的最小外接矩形信息(位置(x, ...

  4. 在matlab中xt( ),编译matlab的s函数(compiling s-functions for matlab)

    编译matlab的s函数(compiling s-functions for matlab) 我一直在尝试使用我的c ++代码在matlab中创建一个s函数块.我正在使用以下mexopts.bat文件 ...

  5. matlab中imresize函数的用法,为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同

    为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同?今年 4 月,我在依照 MATLAB 代码自己写一个卷积神经网络 C++ 实现的过程中,就发现了这个问题,不过那 ...

  6. matlab中load函数是什么意思,MATLAB中load函数的用法

    转载自https://ww2.mathworks.cn/help/matlab/ref/load.html load 将文件变量加载到工作区中全页折叠 语法load(filename)load(fil ...

  7. matlab中dmodce函数使用报错,matlab中randi函数

    ④矩形脉冲信号 矩形脉冲信号在 MATLAB 中用 rectpuls 函数表示,其调用形式为 ft...(1,n); >>xn3=randi(n,1,n); >>subplot ...

  8. matlab中reshape函数按行转换,Matlab中reshape函数的使用

    reshape把指定的矩阵改变颜色,但是元素个数不变, 例如matlab中fgetl函数,行向量: a = [1 2 3 4 5 6] 执行以下段落把它变成3行2列: b = reshape(a,3, ...

  9. 利用freopen()函数和fc命令简化程序调试

    大家在参加ACM比赛或者参加c/c++实验技能竞赛的时候,如果遇到大量的输入和大量的输出时,调试起来很不方便.一来如果结果不正确的话,需要重复输入大量数据:二来如果大量输出的话,得仔细检查输出结果与正 ...

最新文章

  1. 文件目录表(FDT)及其结构
  2. 普元EOS开发积累第一篇(常见错误解决方法) 持续更新
  3. opencv查找表值直方图均衡化
  4. Linux mail 命令参数
  5. 九度oj 题目1078:二叉树遍历
  6. USACO 保护花朵 Protecting the Flowers, 2007 Jan
  7. 负债的阶梯,你在第几层?
  8. Windows 10 自带那么多图标,去哪里找呢?
  9. 茗创:近红外数据处理业务
  10. oppo强制升级android版本,OPPO R17升级更新安卓9.0固件rom刷机包:正式版本-C.10
  11. MinDoc v0.4 发布 轻量级文档在线管理系统
  12. java String类型的处理
  13. Python+Vue计算机毕业设计酒店管理系统(前台后台)i2agu(源码+程序+LW+部署)
  14. 053试题 - 320/321/322/323/324/326/330/332/544/553/585/586/587/588/589/592/596/597/598/599 rman backup
  15. 用Java编程开发“六级单词强化记忆”游戏
  16. java lzma解压_lzma-java
  17. 成功解决python.exe 无法找到程序入口 无法定位程序输入点
  18. 5款常用的html5游戏引擎以及优缺点分析
  19. 手机计算机怎么玩24点游戏,计算器游戏怎么玩 新手前期玩法介绍
  20. vscode自动格式化python代码符合pep8

热门文章

  1. 4个避免使用npm link的理由
  2. 秋冬易感冒着凉 风寒感冒9大食疗方
  3. 微信小程序接入知晓云插件sdk入门
  4. 如何在 Linux 中查找一个文件
  5. C语言在一个数组中查找一个数字
  6. angular拖动插件——ng-drag、ng-drop
  7. java计算两个月份差_Java编程实现计算两个日期的月份差实例代码
  8. 如何将Jenkins基础环境迁移到Docker?
  9. 靠一个HashMap的讲解打动了头条面试官,我的秘诀是
  10. 全球及中国细胞治疗产业应用前景与投资潜力建议报告2022-2028年