gpt4 book ai didi

wolfram-mathematica - Mathematica 中列表的数值微分

转载 作者:行者123 更新时间:2023-12-04 12:13:05 25 4
gpt4 key购买 nike

如何在 Mathematica 中对列表进行数值微分而不先将其拟合为数学表达式(即使用 FindFit )?

具体来说,我想在列表中找到最大斜率的点。

我已经考虑使用 Differences并找到最大差异,但数据中的噪声会使结果不准确。使用 MovingAverage 平滑数据也没有帮助。

提前致谢。

最佳答案

你可以试试 ListConvolve使用高斯内核来平滑您的数据。它的一个很好的特点是 的衍生物。卷积使用高斯核等效于使用 进行卷积衍生品高斯核。

以下是一些示例数据:

data = Table[Sin[x] + .5 RandomReal[{-1, 1}], {x, 0, 6 \[Pi], .05}];
ListLinePlot[data]

enter image description here

这是一个使用高斯核的简单卷积:
data2 = 
Block[{\[Sigma] = 2},
ListConvolve[
Table[1/(Sqrt[2 \[Pi]] \[Sigma]) E^(-x^2/(2 \[Sigma])),
{x, -2 , 2, 1/10}
], data, {11, 11}
]
];
ListLinePlot[data2]

enter image description here

与高斯的一阶导数卷积:
data3 = 
Block[{\[Sigma] = 1},
ListConvolve[
Table[-((E^(-(x^2/(2 \[Sigma]))) x)/(Sqrt[2 \[Pi]] \[Sigma]^2)),
{x, -2 \[Sigma],2 \[Sigma], \[Sigma]/10}
], data, {11, 11}
]
];
ListLinePlot[data3]

enter image description here

您可能想使用 sigma 参数来查看在您的情况下获得最佳结果的方法。

这背后的整个理论被称为 Scale Space .请注意,上述关于卷积的陈述适用于连续空间。 For a discrete implementation, the kernel could be chosen somewhat better.

进一步注意,就像移动平均一样,卷积可以移动数据的特征。

关于wolfram-mathematica - Mathematica 中列表的数值微分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6502440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com