Mathematica中文论坛-非官方

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2386|回复: 0

豆粑粑 fit Gaussian matlab

[复制链接]

387

主题

422

帖子

2012

积分

金牌会员

Rank: 6Rank: 6

积分
2012
发表于 2019-1-25 11:31:12 | 显示全部楼层 |阅读模式
本帖最后由 meatball1982 于 2019-1-25 16:40 编辑

matlab fit Gaussian distribution
init parameter is max, std and  mean of y.
the both of the lsqcurvefit and nlinfit are applied to iterative
fig_gau_1dat.png


fun_fit_gau.m
  1. function [x_new,y_new,b]=fun_fit_gau(x,y)

  2. b(1)=max(y);
  3. b(2)= std(y);
  4. b(3)=mean(y);

  5. fx=@(b,x)b(1)*exp(-b(2)*(x-b(3)).^2);
  6. for l=1:3
  7. b=lsqcurvefit(fx,b,x,y);
  8. b=nlinfit(x,y,fx,b);
  9. end


  10. x_new=interp1([0:length(x)-1],x,[0:0.01:length(x)-1]);
  11. y_new = b(1)*exp(-b(2)*(x_new-b(3)).^2);
复制代码


main.m
  1. clear all
  2. clc
  3. clf



  4. %% outline
  5. %

  6. %% main
  7. dat1 = load('../data/deltE_QM1.dat');

  8. hi_bi = linspace(-20,5,26);

  9. [hi_va1]=hist(dat1(:,2),hi_bi);
  10. hi_va1=hi_va1./sum(hi_va1);

  11. [hi_bi1_new,hi_va1_new,b1]=fun_fit_gau(hi_bi,hi_va1);

  12. pl_max = 1.2*max(hi_va1);

  13. subplot(2,2,1)
  14. hold on
  15. plot(dat1(:,1),dat1(:,2),'m-','linewidth',1.5)
  16. grid on
  17. box on
  18. axis([0 1000 -20 5])
  19. title('data')

  20. subplot(2,2,2)
  21. hold on
  22. barh(hi_bi,hi_va1,'m')
  23. axis([0 pl_max -20 5])
  24. grid on
  25. box on
  26. title('hist')

  27. subplot(2,2,3)
  28. hold on
  29. plot(hi_bi,hi_va1,'mo')
  30. plot(hi_bi1_new,hi_va1_new,'r-','linewidth',2)

  31. box on
  32. grid on
  33. axis([-20 5 0 pl_max])
  34. title('Gau fit')

  35. h=gcf;
  36. fi_na='../file_imgs/fig_gau_1dat';
  37. fun_work_li_035_myfig_out(h,fi_na,3);
复制代码


deltE_QM1.zip

4.48 KB, 下载次数: 0

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|Mathematica中文论坛-非官方 ( 辽ICP备16001491

GMT+8, 2019-5-27 21:39 , Processed in 0.122971 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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