您的位置:首页 > 编程语言 > MATLAB

Matlab曲面拟合和插值

2015-06-22 20:27 453 查看
插值和拟合都是数据优化的一种方法,当实验数据不够多时常常须要用到这样的方法来绘图。

在matlab中都有特定的函数来完毕这些功能。

这两种方法的确别在于:

当測量值是准确的,没有误差时,一般用插值;

当測量值与真实值有误差时。一般用数据拟合。

插值:

对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method) 。当中method包含nearst,linear,spline。cubic。

对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method)。当中method也和上面一样,经常使用的是cubic。

拟合:

对于一维曲线的拟合,一般用到的函数p=polyfit(x,y,n)和yi=polyval(p,xi)。这个是最经常使用的最小二乘法的拟合方法。

对于二维曲面的拟合,有非常多方法能够实现。可是我这里自己用的是Spline Toolbox里面的函数功能。详细用法能够看后面的样例。

对于一维曲线的插值和拟合相对照较简单。这里就不多说了。对于二维曲面的插值和拟合还是比較有意思的。

总结归纳一下给出实例和解说。

%第一给样例

clc;clear;clf;
%原始数据的定义
x=[1:1:12];
y=[1:1:5];
%z是一个5乘12的矩阵。

z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;
0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;
0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;
0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;
0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37];
%直接用原始数据绘图例如以下:
%surf三维表面图
surf(x,y,z);
title('Original data Plot');
xlabel('X'), ylabel('Y'), zlabel('Z'),
%对X,Y,Z轴范围的控制
axis([0 15 0 6 0.2 0.55]);



%第二给样例

clc;clear;clf;

%原始数据的定义

x=[1:1:12];

y=[1:1:5];

%z是一个5乘12的矩阵。

z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;

0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;

0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;

0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;

0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37];

%先考虑插值,须要用到的函数interp2

x1=1:0.2:12;

y1=1:0.2:5;

[x2,y2]=meshgrid(x1,y1);

t11=interp2(x,y,z,x2,y2,'cubic');

surf(x1,y1,t11);

title('After Fit data Plot');

xlabel('X'), ylabel('Y'), zlabel('Z'),

%对X,Y,Z轴范围的控制

axis([0 15 0 6 0.2 0.55]);



%第三个样例

x = rand(100,1)*16 - 8;

y = rand(100,1)*16 - 8;

r = sqrt(x.^2 + y.^2) + eps;

z = sin(r)./r;

xlin = linspace(min(x),max(x),33);

ylin = linspace(min(y),max(y),33);

[X,Y] = meshgrid(xlin,ylin);

Z = griddata(x,y,z,X,Y,'cubic');

mesh(X,Y,Z) %interpolated

axis tight; hold on

plot3(x,y,z,'.','MarkerSize',15) %nonuniform

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: