我试图将一些数据拟合成MATLAB中的正弦函数之和,但是MATLAB中的正弦函数项的数目是有限的,即1≤n≤8,但是,在拟合函数中需要更多的项,即超过50项。是否要用MATLAB将我的数据拟合成一个正弦函数之和,其中有超过8个正弦项?为什么MATLAB中存在这样的约束(技术上还是任意的)?是否有适合正弦函数的工具箱(特别是能够支持访问数据的工具)?
>f = fit(X,Y, 'sin10')
>Error using fittype>iCreateFromLibrary (line 412)
>Library function sin10 not fo
我对MATLAB和它的语法比较陌生。
在R中,我们可以生成一个数据集来进行建模:
> x <- seq(1:100)
> x <- jitter(x,amount=.3)
> y <- seq(1:100)
> y <- sin(y)
> y <- jitter(y)
我们现在有一些从1到100之间的抖动x值,y值大约遵循sin曲线。
现在,我们可以使用nls来拟合模型:
model <- nls(y ~ a + b*x + c*sin(d*x+e), start = c(a=0, b = 1, c = 1,d=1,e=0))
我知道我可以通过执行以下操作在MATLAB中创建3D曲面图:
x = linspace(1,10,100);
y = linspace(10,20,100);
[X Y] = meshgrid(x,y);
Z = X * Y;
surf(X,Y,Z);
但这要求生成的高度图的所有节点都排成一列。我有一组数据,其中包含任意点(x,y)和高度(z)。有没有一种简单的方法来绘制图形,它将以类似于surf的方式在点之间生成一个表面