专栏
标签
M 兼容下 polyfit 计算结果和matlab 不一致,如何设置使其一致?
技术分享
发布于 2025-07-10 10:51:21
查看 1过去327天

问题现象

代码及运行结果如下

c = [30000000000  30100000000  30200000000  30300000000  30400000000  30500000000  30600000000  30700000000  30800000000  30900000000  31000000000  31100000000  31200000000  31300000000  31400000000  31500000000  31600000000  31700000000  31800000000  31900000000  32000000000  32100000000  32200000000.0000  32300000000.0000  32400000000  32500000000  32600000000  32700000000.0000  32800000000.0000  32900000000  33000000000  33100000000  33200000000.0000  33300000000.0000  33400000000  33500000000  33600000000  33700000000.0000  33800000000.0000  33900000000  34000000000  34100000000  34200000000.0000  34300000000.0000  34400000000  34500000000  34600000000  34700000000  34800000000  34900000000  35000000000  35100000000  35200000000  35300000000  35400000000  35500000000  35600000000  35700000000  35800000000  35900000000  36000000000  36100000000  36200000000  36300000000  36400000000  36500000000  36600000000  36700000000  36800000000  36900000000  37000000000  37100000000  37200000000  37300000000  37400000000  37500000000  37600000000  37700000000  37800000000  37900000000  38000000000  38100000000  38200000000  38300000000  38400000000  38500000000  38600000000  38700000000  38800000000  38900000000  39000000000  39100000000  39200000000  39300000000  39400000000  39500000000  39600000000  39700000000  39800000000  39900000000  40000000000  40100000000  40200000000  40300000000  40400000000  40500000000  40600000000  40700000000  40800000000  40900000000  41000000000  41100000000  41200000000  41300000000  41400000000  41500000000  41600000000  41700000000  41800000000  41900000000  42000000000  42100000000  42200000000  42300000000  42400000000  42500000000  42600000000  42700000000  42800000000  42900000000  43000000000  43100000000  43200000000  43300000000  43400000000  43500000000  43600000000  43700000000  43800000000  43900000000  44000000000  44100000000  44200000000  44300000000  44400000000  44500000000  44600000000  44700000000  44800000000  44900000000  45000000000  45100000000  45200000000  45300000000  45400000000  45500000000  45600000000  45700000000  45800000000  45900000000  46000000000  46100000000  46200000000  46300000000  46400000000  46500000000  46600000000  46700000000  46800000000  46900000000  47000000000  47100000000  47200000000  47300000000  47400000000  47500000000  47600000000  47700000000  47800000000  47900000000  48000000000  48100000000  48200000000  48300000000  48400000000  48500000000  48600000000  48700000000  48800000000  48900000000  49000000000  49100000000  49200000000  49300000000  49400000000  49500000000  49600000000  49700000000  49800000000  49900000000  50000000000]
H_mag = [-30.3680  -30.3829  -30.3981  -30.4134  -30.4284  -30.4437  -30.4587  -30.4741  -30.4892  -30.5046  -30.5200  -30.5352  -30.5507  -30.5662  -30.5818  -30.5974  -30.6130  -30.6283  -30.6440  -30.6594  -30.6751  -30.6906  -30.7060  -30.7215  -30.7371  -30.7526  -30.7679  -30.7835  -30.7992  -30.8152  -30.8312  -30.8478  -30.8645  -30.8812  -30.8973  -30.9132  -30.9284  -30.9434  -30.9581  -30.9726  -30.9873  -31.0024  -31.0178  -31.0336  -31.0494  -31.0652  -31.0811  -31.0966  -31.1122  -31.1279  -31.1435  -31.1592  -31.1749  -31.1903  -31.2058  -31.2216  -31.2371  -31.2523  -31.2678  -31.2834  -31.2987  -31.3141  -31.3294  -31.3448  -31.3602  -31.3759  -31.3914  -31.4069  -31.4224  -31.4380  -31.4538  -31.4694  -31.4851  -31.5007  -31.5164  -31.5325  -31.5482  -31.5636  -31.5794  -31.5953  -31.6111  -31.6270  -31.6429  -31.6592  -31.6752  -31.6912  -31.7072  -31.7233  -31.7394  -31.7555  -31.7716  -31.7878  -31.8040  -31.8203  -31.8366  -31.8529  -31.8692  -31.8856  -31.9023  -31.9187  -31.9352  -31.9517  -31.9682  -31.9848  -32.0013  -32.0183  -32.0349  -32.0520  -32.0687  -32.0858  -32.1029  -32.1197  -32.1369  -32.1538  -32.1707  -32.1877  -32.2046  -32.2216  -32.2387  -32.2558  -32.2732  -32.2904  -32.3079  -32.3251  -32.3427  -32.3600  -32.3777  -32.3951  -32.4128  -32.4302  -32.4480  -32.4655  -32.4834  -32.5010  -32.5186  -32.5366  -32.5543  -32.5720  -32.5901  -32.6079  -32.6257  -32.6436  -32.6618  -32.6798  -32.6977  -32.7161  -32.7342  -32.7526  -32.7711  -32.7893  -32.8075  -32.8257  -32.8436  -32.8615  -32.8795  -32.8975  -32.9159  -32.9344  -32.9525  -32.9710  -32.9896  -33.0082  -33.0265  -33.0452  -33.0636  -33.0816  -33.0996  -33.1177  -33.1358  -33.1539  -33.1721  -33.1903  -33.2090  -33.2273  -33.2460  -33.2648  -33.2832  -33.3017  -33.3202  -33.3387  -33.3573  -33.3759  -33.3946  -33.4133  -33.4320  -33.4508  -33.4692  -33.4880  -33.5065  -33.5251  -33.5440  -33.5626  -33.5813  -33.6000  -33.6183  -33.6371  -33.6559  -33.6743  -33.6932  -33.7117  -33.7302]
fit_order_mag = 2
pp_mag = polyfit(c,H_mag, fit_order_mag)

image.png
期望对标的 matlab 结果如下:
image.png

解决方法

使用 fit 函数替代 polyfit 函数进行对标。
1.将最后一行代码修改为:

% pp_mag = polyfit(c,H_mag, fit_order_mag)
pp_mag = fit(c,H_mag,'poly2')   %使用 fit 函数替代

2.运行代码,可以看到已经和期望的 matlab 结果对标:
image.png

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天