matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰
clc,clear,close all;fclose all;
datapath = 'E:\done2\';
datFiles = dir([datapath, '*.txt']);
numFiles = length(datFiles);
data1 = [];
for i = 1:numFiles
data = load([datapath,datFiles(i).name]);
data1 = [data1,data];
end
x=1:350; % % 一共130个
[b,a]=butter(6,1/30/0.5,'low'); % % 想做低通滤波,让数据更平稳一些
% % 按你说的,如果间距不大,就当成一个峰
datalow=filtfilt(b,a,data1); % % 做低通滤波
[min_datalow,~]=min(datalow); % % 寻找各列的最小值
datalow=datalow-min_datalow; % % 以数据最小值为基准
datalow(1,:)=datalow(2,:)+0.1; % % 为了克服数据端点的影响
datalow(end,:)=datalow(end-1,:)+0.1; % % 即使如此,两端依然可能受到影响
subplot(2,1,1),hold on;
[min_data1,~]=min(data1); % % 寻找各列的最小值
plot(x,data1-min(data1),'-g','linewidth',2); % % 原始数据
plot(x,datalow,'-r','linewidth',1); % % 低通滤波数据
peaks_pick_all = []; % %用于存储分出的五个峰的矩阵
for i=1:numFiles % % 循环遍历每个峰
data4everpeaks = datalow(:,i);
[~,locs]=findpeaks(-data4everpeaks);
for ii=1:length(locs)-1; % % 这个地方有点意思,注意是否要减一 % % 循环遍历每个峰
temp=nan(size(data4everpeaks)); % % 截取每一段峰
temp(locs(ii):locs(ii+1))=data4everpeaks(locs(ii):locs(ii+1));
idx=find(~isnan(temp));
ft=fittype('gauss1'); % % 用钟型线去做拟合
% % 当然可以选择其他拟合方式
fitobject=fit(idx,temp(idx),ft); % % 拟合并画图
vvv=fitobject.a1*exp(-((x-fitobject.b1)./fitobject.c1).^2); % % 存储每个峰的信息
peaks_pick_all=[peaks_pick_all,vvv'];
plot(fitobject.a1*exp(-((x-fitobject.b1)./fitobject.c1).^2),'-b','linewidth',1)
end
end
[max_peaks_pick_all,peaks_position]=max(peaks_pick_all);
peaks_area = trapz(peaks_pick_all); % % 求解分出的峰的峰面积
aaa = [peaks_pick_all(:,1)+peaks_pick_all(:,2)+peaks_pick_all(:,3)+peaks_pick_all(:,4)+peaks_pick_all(:,5)] % % 拟合峰的叠加
subplot(2,1,2)
plot(aaa);
matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰相关推荐
- 我是Matlab超级咸汤圆,用plotyy画出4条曲线~~
纠结+娱乐+暴走+暴饮暴食=用双纵坐标画出4条曲线,贴出图,大家鼓捣鼓捣 感觉美美哒,棒棒哒,纯手工制作!!这里要注意的是,画图一定要跟数据结合起来,另外画图语句的书写要注意先后顺序! 代码来也: a ...
- Origin——同时(指数形式)拟合三条曲线(参数共享的全局拟合)
文章目录 1.导入数据 2.拖动并选择三个Y列,然后创建一个线条图.![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603201226551.gif) 3. ...
- MATLAB实现多峰高斯函数拟合/多峰高斯分布函数拟合(MATLAB全代码)
基于MATLAB实现多峰高斯函数拟合/多峰高斯分布函数拟合,提供三类多峰函数拟合方法,分别为双峰函数.三峰函数和自定义高斯函数. 1 原理 2 MATLAB代码实现 MATLAB函数如下: funct ...
- matlab中几种求积分的方法
matlab中几种求积分的方法 举例图形 Midpoint Rule Trapezoid Rule 13 Simpsons 利用integral 结果显示 matlab中几种求积分的方法 最近看了几天 ...
- matlab 重叠峰分解 算法,一种基于粒子群算法的光谱重叠峰分解方法与流程
本发明涉及一种基于粒子群算法的光谱重叠峰分解方法. 背景技术: 由于探测器能量分辨率等原因,峰位接近且峰宽较大的不同谱峰之间常常出现严重重叠干扰的现象,要对光谱作进一步较为准确.全面的成分定量和定性分 ...
- matlab函数输出语句,matlab两种输出语句分别是什么
matlab两种输出语句分别是什么 发布时间:2021-02-26 14:21:27 来源:亿速云 阅读:79 作者:小新 这篇文章主要介绍了matlab两种输出语句分别是什么,具有一定借鉴价值,感兴 ...
- matlab用辛普森公式求积分_标准正态分布概率密度函数的定积分计算方法及Python实现代码...
最近利用碎片时间在读Allen B.Downey的<贝叶斯思维:统计建模的Python学习法>,顺便用手机上的Pythonista写实例.因为Pythonista没有scipy科学计算包, ...
- 多项式在matlab中的应用,matlab的应用-多项式函数及多项式拟合
matlab的应用-多项式函数及多项式拟合 Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用. 多项式函数主要有: roots 求多项式的根 ...
- 大工计算机基础在线3,大工16秋《计算机应用基础》在线测试3-满分100分.pdf
大工16秋<计算机应用基础>在线测试3-满分100分大工16秋<计算机应用基础>在线测试3-满分100分 大工 16 秋<计算机应用基础>在线测试 3 试卷总分:1 ...
最新文章
- python爬虫程序实例-10个python爬虫入门实例
- python问卷调查系统设计案例_从设计到施工,全面剖析超级玻璃屋面系统案例!...
- Swift实现OC中的单例模式
- xml标签里有rownum_rownum和order by以及index的关系
- SQL - 插入数据
- SpringAOP原理分析
- steam怎么设公用计算机,steam如何设置家庭共享?steam设置家庭共享的方法
- 串口通信linux单片机,Linux与单片机串口通信
- 前端使用xlsx-js-style导出Excel文件并修饰单元格样式
- 零代码也能玩转指标系列:通过界面也能实现指标的四则运算
- zoom使用教程_如何使用Zoom在线玩Jackbox游戏
- [解疑][TI]TI毫米波雷达系列(三):调频连续波雷达回波信号3DFFT处理原理(测距、测速、测角)
- Shell脚本笔记(3)- 变量子串
- 大事件!PCIe SSD与SATA SSD同价啦
- Xshell 的安装与使用
- java小组坦克大战游戏开发文档开发日志_java实现坦克大战游戏
- 荧光标记系列Cy3/Cy5/Cy7/FITC荧光素标记石莼多糖/岩藻多糖/半乳岩藻多糖
- 【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁
- 技术干货集中营——WOT 2017全球架构与运维技术峰会
- 【翻译】天机芯Nature_Towards artificial general intelligence with hybrid Tianjic chip architecture
热门文章
- 15年用canvas画的
- openwrt配置虚拟多wan
- 给iOS开发者的Sketch入门教程
- CPU 时间片轮转机制 (RR 调度)
- 你只要上传两张毫无关联的照片「这个网站就会自动帮你合成了!」
- 数字世界,企业何以抵御勒索病毒?
- 微信 图片二维码识别不了的问题
- springboot连接redis 没有权限 io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication requir
- R语言使用pdf函数将可视化图像结果保存到pdf文件中、使用pdf函数打开图像设备、使用dev.off函数关闭图像设备、自定义width参数和height参数指定图像的宽度和高度
- Day 01-创建 Vue3.0 工程