2014-03-27 31 views
2

我有一個愚蠢的問題,我期待採取一些數據點,通過它適合的多項式函數,然後區分該函數來獲得特定功能的最佳點。因此,我在網上做了一些閱讀,並使用了Matlab的「樣條」功能。下面是一些代碼:在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的,所以任何幫助真的理解

+0

我相信你應該使用[polyfit(http://www.mathworks.com/help/matlab/ref/polyfit.html)函數首先安裝一個多項式,然後你會得到一個象徵性的功能。之後使用[符號分化](http://www.mathworks.com/help/symbolic/diff.html)獲得功能最佳點。 –

+1

除Parag的評論外:'spline'不返回一個函數,而是一個包含樣條信息(例如係數等)的'struct'。這就是爲什麼'diff'無法處理它的原因。 – Schorsch

+1

當然,因爲在Matlab的多項式表示爲係數的向量,可以通過PD = P獲得N階多項式p的衍生物(1:結束-1)。* [N-1:-1:1 ] –

回答

2

根據意見:

y = polyfit(a,b,2) 
syms x 
g = y(1)*x^2 + y(2)*x + y(3) 
diff(g) 

和你得到函數g的導數。非常感謝評論部分的人!

+0

太棒了!你自己想清楚了。 –

+1

謝謝你的指導! – user481610