Matlab求解插值问题
在应用领域中;由有限个已知数据点;构造一个解析表达式;由此计算数据点之间的函数值;称之为插值..
实例:海底探测问题
某公司用声纳对海底进行测试;在5×5海里的坐标点上测得海底深度的值;希望通过这些有限的数据了解更多处的海底情况..并绘出较细致的海底曲面图..
1、一元插值
一元插值是对一元数据点xi;yi进行插值..
  线性插值由已知数据点连成一条折线;认为相临两个数据点之间的函数值就在这两点之间的连线上..一般来说;数据点数越多;线性插值就越精确..
  调用格式:yi=interp1x;y;xi;’linear’  %线性插值
            zi=interp1x;y;xi;’spline’  %三次样条插值
            wi=interp1x;y;xi;’cubic’  %三次多项式插值
说明:yiziwi为对应xi的不同类型的插值..xy为已知数据点..
例:已知数据:
x
0
.1
.2
.3
.4
.5
.6
.7
.8
.9
1
y
.3
.5
1
1.4
1.6
1.9
.6
.4
.8
1.5
2
求当xi=0.25时的yi的值..
  程序:
x=0:.1:1;
y=.3 .5 1 1.4 1.6 1 .6 .4 .8 1.5 2;
yi0=interp1x;y;0.025;'linear'
xi=0:.02:1;
yi=interp1x;y;xi;'linear';
zi=interp1x;y;xi;'spline';
wi=interp1x;y;xi;'cubic';
plotx;y;'o';xi;yi;'r+';xi;zi;'g';xi;wi;'k.-'
legend'原始点';'线性点';'三次样条';'三次多项式'
    结果:yi0 =  0.3500
要得到给定的几个点的对应函数值;可用:
xi = 0.2500  0.3500  0.4500
yi=interp1x;y;xi;'spline'
结果:
yi =1.2088  1.5802  1.3454
2、二元插值
二元插值与一元插值的基本思想一致;对原始数据点x;y;z构造见上面函数求出插值点数据xi;yi;zi..
单调节点插值函数;即x;y向量是单调的..
调用格式1zi=interp2x;y;z;xi;yi;’linear’
‘liner’ 是双线性插值 缺省
调用格式2zi=interp2x;y;z;xi;yi;’nearest’
’nearest’ 是最近邻域插值
调用格式3zi=interp2x;y;z;xi;yi;’spline’
‘spline’是三次样条插值
说明:这里xy是两个独立的向量;它们必须是单调的..z是矩阵;是由x如何用matlab将已知点连线和y确定的点上的值..zx;y之间的关系是zi;:=fx;yi ;z:;j=fxj;y 即:当x变化时;z的第i行与y的第i个元素相关;当y变化时z的第j列与x的第j个元素相关..如果没有对x;y赋值;则默认x=1:n; y=1:m..nm分别是矩阵z的行数和列数..
2已知某处山区地形选点测量坐标数据为:
x=0  0.5  1  1.5  2  2.5  3  3.5  4  4.5  5
y=0  0.5  1  1.5  2  2.5  3  3.5  4  4.5  5  5.5  6
海拔高度数据为:
z=89 90 87 85 92 91 96 93 90 87 82
  92 96 98 99 95 91 89 86 84 82 84
  96 98 95 92 90 88 85 84 83 81 85
  80 81 82 89 95 96 93 92 89 86 86
  82 85 87 98 99 96 97 88 85 82 83
  82 85 89 94 95 93 92 91 86 84 88
  88 92 93 94 95 89 87 86 83 81 92
  92 96 97 98 96 93 95 84 82 81 84
  85 85 81 82 80 80 81 85 90 93 95
  84 86 81 98 99 98 97 96 95 84 87
  80 81 85 82 83 84 87 90 95 86 88
  80 82 81 84 85 86 83 82 81 80 82
  87 88 89 98 99 97 96 98 94 92 87
其地貌图为:
对数据插值加密形成地貌图..
  程序:
  x=0:.5:5;
  y=0:.5:6;
  z=89 90 87 85 92 91 96 93 90 87 82
    92 96 98 99 95 91 89 86 84 82 84
    96 98 95 92 90 88 85 84 83 81 85
    80 81 82 89 95 96 93 92 89 86 86
    82 85 87 98 99 96 97 88 85 82 83
    82 85 89 94 95 93 92 91 86 84 88
    88 92 93 94 95 89 87 86 83 81 92
    92 96 97 98 96 93 95 84 82 81 84
    85 85 81 82 80 80 81 85 90 93 95
    84 86 81 98 99 98 97 96 95 84 87
    80 81 85 82 83 84 87 90 95 86 88
    80 82 81 84 85 86 83 82 81 80 82
    87 88 89 98 99 97 96 98 94 92 87;
    meshx;y;z  %绘原始数据图
    xi=linspace0;5;50;  %加密横坐标数据到50
    yi=linspace0;6;80;  %加密纵坐标数据到60
    xii;yii=meshgridxi;yi;  %生成网格数据
    zii=interp2x;y;z;xii;yii;'cubic';  %插值
    meshxii;yii;zii  %加密后的地貌图
    hold on    % 保持图形
    xx;yy=meshgridx;y;  %生成网格数据
    plot3xx;yy;z+0.1;’ob’  %原始数据用‘O’绘出
3、二元非等距插值
  调用格式:zi=griddatax;y;z;xi;yi;’指定插值方法’
  插值方法有:linear            % 线性插值  默认
                  bilinear        % 双线性插值
                  cubic            % 三次插值
                  bicubic        % 双三次插值
                  nearest        % 最近邻域插值
例3:用随机数据生成地貌图再进行插值
  程序:
x=rand100;14-2;
y=rand100;14-2;
p-x.^2-y.^2;
ti=-2:.25:2;
xi;yi=meshgridti;ti; % 加密数据
zi=griddatax;y;z;xi;yi;% 线性插值
meshxi;yi;zi
hold on
plot3x;y;z;'o'
该例中使用的数据是随机形成的;故函数griddata可以处理无规则的数据..

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。