ZZH95927 2022-03-10 13:38 采纳率: 50%
浏览 215
已结题

请问怎么在MATLAB对现有数据进行双曲正割拟合?

img

如图所示,通过测量我测到了激光脉冲的自相关数据并且已经归一化处理,请问应该怎么用MATLAB对其进行双曲正割拟合?本人没有MATLAB基础,实在是搞不明白……

  • 写回答

2条回答 默认 最新

  • 技术专家团-Joel 2022-03-10 15:34
    关注

    比方说你有两列数据储存在变量xy中,那么可以这么做

    % 双曲正割函数拟合
    % y = a*sech(b*(x+c))+d;
    % 这是原始数据【两列】
    xy = [
      15.037593984962406   0.000000000000202
      15.639097744360901   0.000000000000672
      16.240601503759400   0.000000000002238
      16.842105263157894   0.000000000007451
      17.443609022556391   0.000000000024813
      18.045112781954888   0.000000000082632
      18.646616541353385   0.000000000275173
      19.248120300751879   0.000000000916360
      19.849624060150376   0.000000003051585
      20.451127819548873   0.000000010162136
      21.052631578947370   0.000000033841105
      21.654135338345863   0.000000112694847
      22.255639097744361   0.000000375287055
      22.857142857142858   0.000001249749902
      23.458646616541355   0.000004161813728
      24.060150375939848   0.000013859327759
      24.661654135338345   0.000046153186662
      25.263157894736842   0.000153695523022
      25.864661654135340   0.000511824084635
      26.466165413533833   0.001704433095836
      27.067669172932330   0.005675920491111
      27.669172932330827   0.018899944966938
      28.270676691729324   0.062882369219706
      28.872180451127818   0.207335621729432
      29.473684210526315   0.622238964880578
      30.075187969924812   0.988799097677492
      30.676691729323309   0.484394775568900
      31.278195488721803   0.154240058732708
      31.879699248120300   0.046570222065566
      32.481203007518801   0.013991464997031
      33.082706766917291   0.004201680280833
      33.684210526315788   0.001261726484585
      34.285714285714285   0.000378883636868
      34.887218045112782   0.000113774867015
      35.488721804511279   0.000034165423682
      36.090225563909776   0.000010259525701
      36.691729323308273   0.000003080830156
      37.293233082706770   0.000000925141642
      37.894736842105260   0.000000277810530
      38.496240601503757   0.000000083423648
      39.097744360902254   0.000000025051264
      39.699248120300751   0.000000007522637
      40.300751879699249   0.000000002258971
      40.902255639097746   0.000000000678346
      41.503759398496243   0.000000000203700
      42.105263157894740   0.000000000061169
      42.706766917293230   0.000000000018368
      43.308270676691727   0.000000000005516
      43.909774436090224   0.000000000001656
      44.511278195488721   0.000000000000497
      45.112781954887218   0.000000000000149  
    ];
    x = xy(:,1);
    y = xy(:,2);
    plot(x,y, 'ro')
    hold on
    % 这是模型函数
    % beta(1)对应a
    % beta(2)对应b
    % beta(3)对应c
    % beta(4)对应d
    modelFun = @(beta, x) beta(1)*sech(beta(2)*(x+beta(3)))+beta(4);
    beta = nlinfit(x,y,modelFun, [1, 1, -30, 1]);
    yfit = modelFun(beta, x);
    plot(x, yfit, 'b-')
    legend('原数据','拟合')
    
    

    效果:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 赞助了问题酬金10元 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来