查看: 188|回复: 4|关注: 0

[已解决] matlab怎样忽略小的波动提取总峰

[复制链接]

新手

9 麦片

财富积分


050


2

主题

3

帖子

0

最佳答案
各位大神们好,

我在尝试用matlab处理数据的过程中遇到了一点问题,数据见附件1,用plot函数画图(见附件2),数据能够显示出清晰的趋势,它有两个峰,我现在想提取这两个峰,得到他们的峰高、位置、峰宽之后,再分别进行正态拟合,

我尝试过以下几个思路
一,我尝试用findpeaks对数据进行处理,但是由于数据在总的攀爬过程中有这许多波动,处理的结果是几百个峰,不符合预期
二,我也尝试先用smoothdata处理后再用findpeaks,但是处理过的数据和原始数据相差较远,看不到明显的两个峰了

想询问大神们有什么思路吗?没有明确的解答也OK,就是陷入了思路不通的僵局。

图.fig

312.59 KB, 下载次数: 1

附件2:粗略图

data.mat

105.74 KB, 下载次数: 1

附件1:数据

回复主题 已获打赏: 0 积分

举报

MATLAB 数学、统计与优化
版块优秀回答者

入门

106 麦片

财富积分


50500


0

主题

218

帖子

19

最佳答案
  • 关注者: 4
发表于 2020-8-2 14:48:08 | 显示全部楼层 |此回复为最佳答案
SSy =   6.0859e+05
fx=@(b,x)(b(1)+b(2)*x+b(3)*x.^2+b(4)*x.^3+b(5)*x.^4+b(6)*x.^5+b(7)*x.^6)./(1+b(8)*x+b(9)*x.^2+b(10)*x.^3+b(11)*x.^4+b(12)*x.^5)+b(13)*exp(-b(14)*(x-b(15)).^2)+b(16)*exp(-b(17)*(x-b(18)).^2);
b =[22.52777436  -16.25864471  4.869742387  -0.7601723799  0.06461539321  -0.002852349876  5.2335e-05  -0.4993835184  0.09583173406  -0.008516434254  0.0003204018722  -2.684263865e-06  113.8776237  0.62051269  8.395401043  5.278312487  0.5690203764  13.06778605];
RSS = 485.566224784
MSe =  0.029951
R^2 =     0.9992
回复此楼 已获打赏: 0 积分

举报

MATLAB 数学、统计与优化
版块优秀回答者

入门

106 麦片

财富积分


50500


0

主题

218

帖子

19

最佳答案
  • 关注者: 4
发表于 2020-8-2 14:59:26 | 显示全部楼层
注:x=x/1000,以便于参数估计。
回复此楼 已获打赏: 0 积分

举报

MATLAB 数学、统计与优化
版块优秀回答者

入门

106 麦片

财富积分


50500


0

主题

218

帖子

19

最佳答案
  • 关注者: 4
发表于 2020-8-2 15:04:15 | 显示全部楼层
先前的图片发不出,改用jpg试试。
nh1536.jpg
回复此楼 已获打赏: 0 积分

举报

新手

9 麦片

财富积分


050


2

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-8-2 15:24:14 | 显示全部楼层
顾世梁 发表于 2020-8-2 14:48
SSy =   6.0859e+05
fx=@(b,x)(b(1)+b(2)*x+b(3)*x.^2+b(4)*x.^3+b(5)*x.^4+b(6)*x.^5+b(7)*x.^6)./(1+b(8) ...

谢谢,我好好研究下一下。
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表