如何用MATLAB把二元离散点拟合成三维平面

时间:2024-02-18 21:02:14

1)原始数据的输入,这里可以采用workspace输入,表格,文本等格式,用MATLAB进行读取,鉴于本例中,就直接在命令行窗口中直接输入:

// 拟合三维平面
clear all
clc
close all
Data = [ 2	-10	7
2	-8	7
。。。
(省略部分数据)
。。。
22	8	17
22	10	17];
;

2)将两元因变量分别存于x,y之中,将变量存于z中。

// 拟合三维平面
x=Data(:,1);y=Data(:,2);z=Data(:,3); 

3)网格化,插值

// 拟合三维平面
[X Y] =  meshgrid(min(x):2:max(x),min(y):2:max(y));%将x,y轴网格化,重构用于画图x,y轴数据
[X,Y,Z] = griddata(x,y,z,X,Y);%插值,重构用于画图的Z轴数据
figure(\'NumberTitle\', \'off\', \'Name\', \'模糊控制平面\');
mesh(X,Y,Z)%三维曲面

在这里插入图片描述
4)拟合公式

// 拟合三维平面
row = size(Data,1);
x=Data(:,1);y=Data(:,2);z=Data(:,3); 
T=[x y x.*y x.*x y.*y ones(row,1)]\z;
syms x y
z = vpa([x y x*y x*x y*y 1]*T,4);

得到本里中所拟合出的三维曲面公式为;
在这里插入图片描述