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

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

悬赏问题

  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?
  • ¥15 已知速度v关于位置s的等式,怎么转化为已知位置求速度v的等式
  • ¥15 我有个餐饮系统,用wampserver把环境配置好了,但是后端的网页却进去,是为什么,能不能帮远程一下?
  • ¥15 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"
  • ¥20 基于决策树的数字信号处理,2ask 2psk 2fsk的代码,检查下报错的原因
  • ¥15 wincc已组态的变量过多
  • ¥60 如图:直线与椭圆X轴平行,求直线与椭圆任意一点的相切坐标计算公式