【发布时间】:2014-03-28 04:07:46
【问题描述】:
我有一个愚蠢的问题,我希望获取一些数据点,通过它拟合一个多项式函数,然后对该函数进行微分以获得该特定函数的最佳点。因此,我在网上做了一些阅读,并使用了 Matlab 的“样条”函数。这是一些代码:
a = [50; 100; 150;200;250;300;350]
b = [56;23;22;18;14;15;21]
y = spline(a,b)
但是当我使用diff(y) 时,我收到以下错误:
??? Error using ==> diff
Function 'diff' is not supported for class 'struct'.
我对 Matlab 不太熟悉,所以非常感谢任何帮助
【问题讨论】:
-
我相信你应该首先使用polyfit 函数拟合多项式,然后得到一个符号函数。之后使用symbolic differentiation得到函数的最佳点。
-
除了 Parag 的注释:
spline不返回一个函数,而是一个包含样条信息(例如系数等)的struct。这就是diff无法处理的原因。 -
当然,由于matlab中多项式表示为系数向量,所以可以通过pd=p(1:end-1).*[N -1:-1:1]
标签: matlab