matlab画三维图有三组数据x=x1,x2.x20y=y1,y2,.y20z=z1,z2.z20请问怎么样用matlab会出这二十个点((x1,y1,z1),(x2,y2.z2).(x20,y20,z20))的曲面
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/27 04:22:29
matlab画三维图有三组数据x=x1,x2.x20y=y1,y2,.y20z=z1,z2.z20请问怎么样用matlab会出这二十个点((x1,y1,z1),(x2,y2.z2).(x20,y20,z20))的曲面
matlab画三维图
有三组数据x=x1,x2.x20
y=y1,y2,.y20
z=z1,z2.z20
请问怎么样用matlab会出这二十个点((x1,y1,z1),(x2,y2.z2).(x20,y20,z20))的曲面
matlab画三维图有三组数据x=x1,x2.x20y=y1,y2,.y20z=z1,z2.z20请问怎么样用matlab会出这二十个点((x1,y1,z1),(x2,y2.z2).(x20,y20,z20))的曲面
实际上是无法直接绘制出这样的散点对应的曲面的,需要先根据给出的散点(采样点)数据通过三维插值(或拟合)获得网格节点上的曲面数据.
以下代码或许对你有启发:
clear
x=[129 140 103.5 88 185.5 195 105.5 157.5 107.5 77 81 162 162 117.5];
y=[7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5];
z=[-4 -8 -6 -8 -6 -8 -8 -9 -9 -8 -8 -9 -4 -9];
cx=75:0.5:200;
cy=-70:0.5:150;
cz=griddata(x,y,z,cx,cy','cubic');
meshz(cx,cy,cz)
一般情况下可以采用如下我给你编写的函数
function PlotGriddata(x,y,z)
mx=min(x);%求x的最小值
Mx=max(x);%求x的最大值
my=min(y);
My=max(y);
Nx=50; %定义x轴插值数据点数,根据实际情况确定
Ny=50;%定义y轴插值数据点数,根据实际情况确定
cx=linspace(mx,Mx,Nx);%在原始x数据的最大值最小值之间等间隔生成Nx个插值点
cy=linspace(my,My,Ny);%在原始数据y的最大值最小值之间等间隔生成Ny个插值点
cz=griddata(x,y,z,cx,cy','cubic');%调用matlab函数进行立方插值
meshz(cx,cy,cz) %绘制曲面