怎样用matlab插值得到函数表达式

>> x=[1:1:10];
>> y=[2:2:20];
>> x1=x;
>> y1=interp1(x,y,x1,'spline')
y1 =

2 4 6 8 10 12 14 16 18 20
然后怎样将所求得的函数表达式表示出来?
谢谢!
首先,谢谢!
我在运行上边程序时遇到如下问题,麻烦再帮我解答下,谢谢!
>> pp=interp1(x,y,x1,'spline','pp')
??? In an assignment A(matrix,:) = B, the number of elements in the subscript of A and
the number of rows in B must be the same.

Error in ==> F:\mtlab6.5\toolbox\matlab\polyfun\interp1.m
On line 218 ==> v(p(k),:) = extrapval;
而 >> pp=interp1(x,y,x1,'spline')

pp =

2 4 6 8 10 12 14 16 18 20
可以正常运行。

x=[1:1:10];
y=[2:2:20];
pp=interp1(x,y,'spline','pp')
breaks=pp.breaks
coefs=pp.coefs

说明:
interp1得到的函数其实是分段函数。
函数的全部信息全部都在pp里
让我们看一下其breaks分量和coefs分量,他们蕴含着函数表达式,具体涵义如下:
假设coefs的第i行为a b c d,breaks的第i和i+1个元素为m和n
那么在区间[m,n]的函数表达式就是a(x-m)^3+b(x-m)^2+c(x-m)+d
下面是例子
coefs第一行是[0 0 2 2],breaks前两个元素是1和2
就代表在区间[1,2]的函数表达式是2(x-1)+2

______________________
pp=interp1(x,y,'spline','pp')
不是pp=interp1(x,y,x1,'spline','pp')
x1不要,得到的是蕴含了分段多项式函数的结构pp。
你要直接得到在x1处的值,直接就y1=interp1(x,y,x1,'spline')就可以了,不要'pp'。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-14
说的是拟合吧?
插值是根据插值函数和已知数据点计算未知的数据,已知数据满足拟合方程,插值函数自选;
拟合是用方程去逼近数据点,数据点不一定在曲线上。
相似回答