10 插值
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量,
'method'表示采用的插值方法,MATLAB提供的插值方法有几种:
'nearest'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'pchip'立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
%}
x = 0:2*pi;
y = sin(x);
xx = 0:0.5:2*pi;
% interp1对sin函数进行分段线性插值,调用interp1的时候,默认的是分段线性插值
y1 = interp1(x,y,xx,'linear');
subplot(2,2,1);
plot(x,y,'o',xx,y1,'r')
title('分段线性插值')
h=6:2:18; t1=[18 20 22 25 30 28 24]; t2=[ 15 19 24 28 34 32 30]; m=6.5:2:18.5; y1 = interp1(h,t1,m,'spline') y2 = interp1(h,t2,m,'spline') ---------------------------------- y1 = 1 至 6 列 18.5020 20.4986 22.5193 26.3775 30.2051 26.8178 7 列 23.7966 y2 = 1 至 6 列 15.6553 20.3355 24.9089 29.6383 34.2568 30.9594 7 列 31.1218
11 多项式拟合 a = polyfit ( x, y, n)函数,a是n阶函数的系数,a是一个长度为n+1的行向量
计算多项式 y
= polyval(p
,x
)p
在 x
的每个点处的值。参数 p
是长度为 n+1
的向量,其元素是 n
次多项式的系数(降幂排序)
x=1:10:101; y=log10(x); y1= polyfit ( x, y, 5); y2 = polyval(y1,x); plot(x,y,'*',x,y2)