Mathematica:处理拟合参数

4

我想访问 NonlinearModelFit 的适配参数。以下是代码:

model = a*Cos[b*t + c];
fit = NonlinearModelFit[data, model, {a, b, c}, t, Method -> NMinimize]

当我使用以下命令时:
fit["BestFitParameters"]

值以以下格式返回:
{a -> 1, b -> 2, c -> -3}

现在我想将a的值存储在变量x中。

x=fit["BestFitParameters"][[1]]

但是这会产生
x= a -> 1

不,我想知道如何解决“-> - 运算符”以获取

x=1

感谢您的提前支持!
3个回答

3

好的,你可以写

x = a/.{a -> 1, b -> 2, c -> -3}

这将把a的值分配给x

我不确定你是否应该这样做,你可以将规则列表存储在变量中,并在需要时从中提取相应部分。


2
我建议采用另一种方法:

C1fitparameters = 
Table[{C1fit["BestFitParameters"][[i, 1]], C1fit["BestFitParameters"][[i, 2]]}, 
{i, 1, Length[C1fit["BestFitParameters"]]}]

返回一个列表:

{{A, 5.11419}, {Beta, 14.2637}, {Omega_0, 174.118}, {Phi, -0.117246}}

因此,要访问任一变量名称:

C1fitparameters[[1, 1]]

返回 A。并且:
C1fitparameters[[1, 2]]

返回A的值,为5.11419。大功告成。


1

你想要

x = fit["BestFitParameters"][[1]][[2]]

使用x = fit["BestFitParameters"][[1]][[2]]可以获取a->1的右侧,使用x = fit["BestFitParameters"][[1]][[1]]可以获取左侧(在本例中为"a")


虽然这段代码片段可能解决了问题,但包括解释真的有助于提高您的帖子质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您的代码建议原因。请尽量不要在代码中添加过多的解释性注释,这会降低代码和解释的可读性! - kayess

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接