形状语言建模

버전1.14 (668 kb)작성자: 约翰D 'Errico
使用形状原语的最小二乘样条建模

다운로드수:26k

업데이트날짜:2017/4/16

라이선스보기

如果你在荒岛上只能下载一个曲线拟合工具到你的笔记本电脑上,那么这个工具应该就是。
多年来,我一直建议人们使用最小二乘样条来进行曲线拟合,但有一个警告。样条提供了巨大的灵活性,以建立在任何形状或形式的曲线。它们几乎可以很好地拟合你扔给它们的任何数据集。这种灵活性有时也会导致他们的失败。像多项式模型一样,如果你不小心,样条曲线可能会太灵活。诀窍是把你所研究的系统的知识用到问题上。
作为科学家、工程师、数据分析师等,您通常对希望建模的流程有一定的了解。有时这些知识来自物理原理,有时来自经验,有时这些知识只是来自于观察数据图。不管来源是什么,我们经常希望将流程的先验知识构建到我们的建模工作中。这可能是使用非线性回归工具的最大原因,我认为是最糟糕的原因。如果你只是因为你的数据是单调的而拟合一个sigmoid函数,那么你选择了错误的建模工具。(如果您正在拟合一个sigmoid,因为这是您的流程的正确模型,那么继续拟合这个sigmoid。)
我认为,当你只需要单调曲线拟合时,合适的工具是最小二乘样条,但样条被适当地约束为你所知道的基本形状。这是一种非常贝叶斯的建模方法,在我的经验中非常有用。
这里提供的SLM工具为您提供了一个易于使用的界面,可以从数据中构建无限多的曲线类型。SLM代表形状语言建模。其思想是使用一组形状原语为曲线拟合提供一个处方。如果你的曲线是单调的,那么将该信息构建到模型中,这样你就可以估计出最适合你的数据的单调曲线。你会发现,一旦你使用了适当的约束集,你会想知道为什么你过去使用非线性回归!!
例如,该文件的截图是为以下数据生成的:

X = (sort(rand(1100)) - 0.5)*pi;
Y = sinx。^5 + randn(size(x))/10;

slm = slmengine (x, y,“阴谋”,“对”,“结”,10日,“增加”,“对”,…
“leftslope”,0,' rightslope ', 0)
slm =
形式:“slm”
度:3
结:[10x1 double]
Coef: [10x2 double]
处方:[1x1 struct]
X: [100x1 double]
Y: [100x1 double]

您可以使用slmeval计算样条或其导数。

slm slmeval (1.3)
ans =
0.79491

使用plotslm绘制这些样条。

plotslm (slm)

plotslm函数很好,因为它是一个简单的gui,允许您绘制曲线,残差,其导数或积分。您还可以评估样条的各种参数,例如在区间内的最大函数值,最小或最大斜率等。

slmpar (slm maxslope)
ans =
1.5481

您可以使用属性/值对接口向slmengine提供所有这些信息。Slmset是这种交互的中介,因此您可以使用它来创建将要使用的属性集。默认的属性集及其值由slmset给出。关于函数的形状、斜率、曲率、值等,都可以通过一个简单的命令来控制。SLMENGINE还提供了生成各种顺序的样条以及自由结样条的能力。

要获得SLM工具的完整示例集,请参阅本次提交中附带的已发布教程。也有一个小论文包括形状语言建模的概念曲线拟合。

SLM工具包将在将来的某个时候得到很大的改进。我将添加一个图形界面。同样,如果我遗漏了任何自然形状原语,请告诉我。虽然我努力做到包容,但我肯定还是错过了一些东西。如果我能把你最喜欢的添加到上面的列表中,我会尽量这样做。

最后,SLM工具需要优化工具箱来解决各种估计问题。

化学式용양식

约翰·迪里科(2022)。形状语言建模(//www.tianjin-qmedu.com/matlabcentral/fileexchange/24443-slm-shape-language-modeling), MATLAB中央文件交换。검색됨

Matlab릴리스호환정보
개발환경:R2007b
모든릴리스와호환
플랫폼호환성
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

SLMtools / html /