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

请问怎么在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日

悬赏问题

  • ¥15 有偿请人帮写个安卓系统下禁止装软件及禁止拷入文件的程序
  • ¥100 用 H.265 对音视频硬编码 (CUDA)
  • ¥20 mpich安装完成后出问题
  • ¥15 multisim仿真
  • ¥15 stm32循迹小车代码问题
  • ¥15 输入一堆单词,使其去重输出
  • ¥15 qc代码,修改和添加东西
  • ¥50 Unity的粒子系统使用shadergraph(内置管线)制作的一个顶点偏移shader,但是粒子模型移动时,顶点也会偏移
  • ¥15 如何用python处理excel的数据(极值标准化)
  • ¥15 三向应力状态求剪应力