matlab 三维绘图汇总
A=[1.486,3.059,0.1;2.121,4.041,0.1;2.570,3.959,0.1;3.439,4.396,0.1; 4.505,3.012,0.1;3.402,1.604,0.1;2.570,2.065,0.1;2.150,1.970,0.1; 1.794,3.059,0.2;2.121,3.615,0.2;2.570,3.473,0.2;3.421,4.160,0.2; 4.271,3.036,0.2;3.411,1.876,0.2;2.561,2.562,0.2;2.179,2.420,0.2; 2.757,3.024,0.3;3.439,3.970,0.3;4.084,3.036,0.3;3.402,2.077,0.3; 2.879,3.036,0.4;3.421,3.793,0.4;3.953,3.036,0.4;3.402,2.219,0.4; 3.000,3.047,0.5;3.430,3.639,0.5;3.822,3.012,0.5;3.411,2.385,0.5; 3.103,3.012,0.6;3.430,3.462,0.6;3.710,3.036,0.6;3.402,2.562,0.6; 3.224,3.047,0.7;3.411,3.260,0.7;3.542,3.024,0.7;3.393,2.763,0.7]; x=A(:,1);y=A(:,2);z=A(:,3); scatter(x,y,5,z)%散点图 figure [X,Y,Z]=griddata(x,y,z,linspace(1.486,4.271)',linspace(1.604,4.276),'v4');%插值 pcolor(X,Y,Z);shading interp%伪彩色图 figure,contourf(X,Y,Z) %等高线图 figure,surf(X,Y,Z)%三维曲面
我最近也在学习这方面的内容,不过我的数据点是离散的,因此做了一个插值。不知道这个结果对你有没有用,就做个参考吧,我也是新手,这个结果也是弄了好久才弄出来的.
x=[140.0 88.0 195.0 105.5 157.5 107.5 81.0 162.0 162.0];
y=[141.5 147.0 137.5 85.5 60.5 121.0 56.5 116.5 84.0 ];
plot(x,y,'o')
Z=[14 16 14 14 15 15 16 15 13 ];
h=-Z;
xi=70:3:200;yi=0:3:150;
[X,Y]=meshgrid(xi,yi);
H=griddata(x,y,h,X,Y,'v4');
mesh(X,Y,H);
view(-60,30);
x=[140.0 88.0 195.0 105.5 157.5 107.5 81.0 162.0 162.0];
y=[141.5 147.0 137.5 85.5 60.5 121.0 56.5 116.5 84.0 ];
plot(x,y,'o')
Z=[14 16 14 14 15 15 16 15 13 ];
h=-Z;
xi=70:3:200;yi=0:3:150;
[X,Y]=meshgrid(xi,yi);
H=griddata(x,y,h,X,Y,'v4');
mesh(X,Y,H);
view(-60,30);
数据是n*3的坐标(如附件data.txt),分别是x y z的坐标,这些坐标并没有按照大小排序,z值也与x y没有固定关系 要做出类似下图的光滑曲面图 并剖面 先谢过了 |
利用你现有的数据可以用interp2差值计算其他区域,或者用神经网络逼近其他区域值,画出曲面...
通过实验,获得了很多诸如(1 2 3)(4 5 6 )(7 8 9)(10 11 12)(13 14 15)(16 17 18)(19 20 21)这样的数据,总共有近一千多个,在MATLAB中怎么画三维曲面图,以便于对数据的分析,希望详细点,谢谢!
通过实验,获得了很多诸如(1 2 3)(4 5 6 )(7 8 9)(10 11 12)(13 14 15)(16 17 18)(19 20 21)这样的数据,总共有近一千多个,在MATLAB中怎么画三维曲面图,以便于对数据的分析,希望详细点,谢谢!
首先将数据以txt的形式放入Matlab下的work工作文件夹下(如名字为 shuju.txt)
新建M文件
输入
a=importdata('shuju.txt');
x=a(:,1);
y=a(:,2);
z=a(:,3);
xx=meshgrid(x1);
yy=meshgrid(y1);
zz=meshgrid(z1);
mesh(xx,yy,zz)
三维图通常包含两种类别:三维曲线图、三维曲面图
一、三维曲线图plot3
由若干个点连接起来的空间曲线。给plot3提供三个基本向量分别对应一系列顺序的点,这些点的连接就构成了一个曲线图形了。 三个向量分别对应X轴,Y轴和Z轴。
t=0:pi/50:10*pi;
plot3(sin(t), cos(t), t);
打开网格线grid on
是的三个坐标轴刻度相等: axis square
二、三维网线图 mesh
mesh需要三个基本参数,两个向量和一个矩阵。 两个向量的大小为m和n,那么第三个矩阵的大小mn。
提供了这三个参数之后,才能绘制出三维网线图。
x=-5:0.1:5; y=-5:0.1:5; z=zeros(101, 101);
m=[0,0]'; s=[1,0;0,1];
m=[0,0]'; s=[1,0;0,1];
for i=1:101
for j=1:101
z(i,j)=cgdv(m,s,[x(i) y(j)]');
end
end
1, mesh(z)不提供两个向量时,会用z的横纵坐标作为代替
for j=1:101
z(i,j)=cgdv(m,s,[x(i) y(j)]');
end
end
1, mesh(z)不提供两个向量时,会用z的横纵坐标作为代替
三、surf三维曲面图
同样需要提供三个参数,和mesh相同,区别是展示的图形。
四、关于meshgrid的使用
meshgrid和点号矩阵运算相结合。
[X, Y]=meshgrid(x, y);
其中x为n个元素的向量,y为m个元素的向量。 结果X成为m行重复的x, 而Y成为n列重复的y'。
这样做的目的是列举X和Y上所有的(i,j)组合可以得到原始数据的所有组合。
配合点号运算后可以把两个相同形状的矩阵进行元素对元素的运算。
Z=X.*Y. 则把相同位置所有的元素进行对应计算。
a=importdata('cost.txt');
x=a(:,1);
y=a(:,2);
plot(x,y,'o')
z=a(:,3);
h=-Z;
xi=1:1:4;yi=0:1:3;
[X,Y]=meshgrid(xi,yi);
H=griddata(x,y,h,X,Y,'v4');
mesh(X,Y,H);
view(-60,30);
a=importdata('shuju.txt');
x=a(:,1);
y=a(:,2);
z=a(:,3);
xx=meshgrid(x1);
yy=meshgrid(y1);
zz=meshgrid(z1);
mesh(xx,yy,zz)
x=cost(:,1);
y=cost(:,2);
plot(x,y,'o')
z=cost(:,3);
xi=0:5:100;yi=0:0.5:5;
[X,Y]=meshgrid(xi,yi);
Z=griddata(x,y,z,X,Y,'v4');
mesh(X,Y,Z);
view(-60,30);
x=[140.0 88.0 195.0 105.5 157.5 107.5 81.0 162.0 162.0];
y=[141.5 147.0 137.5 85.5 60.5 121.0 56.5 116.5 84.0 ];
plot(x,y,'o')
Z=[14 16 14 14 15 15 16 15 13 ];
h=-Z;
xi=70:3:200;yi=0:3:150;
[X,Y]=meshgrid(xi,yi);
H=griddata(x,y,h,X,Y,'v4');
mesh(X,Y,H);
view(-60,30);
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)
x=[1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4];
y=[0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3];
z=[70 60 30 0 80 75 60 30 85 80 75 70 90 85 80 75];
cx=1:1:4;
cy=0:1:4;
cz=griddata(x,y,z,cx,cy','cubic');
meshz(cx,cy,cz)
xyz=[40 2 1.4
40 5 2.5
40 7 1.4
40 9 0.9
50 2 1
50 5 3.5
50 7 0.7
50 9 1.8
60 2 0.4
60 5 0.5
60 7 4.9
60 9 4.5
70 2 0.2
70 5 1
70 7 3.5
70 8 5.6 ];
tri = delaunay(xyz(:,1), xyz(:,2));
trimesh(tri, xyz(:,1), xyz(:,2),xyz(:,3));
shading interp
x=a(:,1);
y=a(:,2);
plot(x,y,'o')
z=a(:,3);
h=-Z;
xi=1:1:4;yi=0:1:3;
[X,Y]=meshgrid(xi,yi);
H=griddata(x,y,h,X,Y,'v4');
mesh(X,Y,H);
view(-60,30);
a=importdata('shuju.txt');
x=a(:,1);
y=a(:,2);
z=a(:,3);
xx=meshgrid(x1);
yy=meshgrid(y1);
zz=meshgrid(z1);
mesh(xx,yy,zz)
x=cost(:,1);
y=cost(:,2);
plot(x,y,'o')
z=cost(:,3);
xi=0:5:100;yi=0:0.5:5;
[X,Y]=meshgrid(xi,yi);
Z=griddata(x,y,z,X,Y,'v4');
mesh(X,Y,Z);
view(-60,30);
x=[140.0 88.0 195.0 105.5 157.5 107.5 81.0 162.0 162.0];
y=[141.5 147.0 137.5 85.5 60.5 121.0 56.5 116.5 84.0 ];
plot(x,y,'o')
Z=[14 16 14 14 15 15 16 15 13 ];
h=-Z;
xi=70:3:200;yi=0:3:150;
[X,Y]=meshgrid(xi,yi);
H=griddata(x,y,h,X,Y,'v4');
mesh(X,Y,H);
view(-60,30);
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)
x=[1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4];
y=[0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3];
z=[70 60 30 0 80 75 60 30 85 80 75 70 90 85 80 75];
cx=1:1:4;
cy=0:1:4;
cz=griddata(x,y,z,cx,cy','cubic');
meshz(cx,cy,cz)
xyz=[40 2 1.4
40 5 2.5
40 7 1.4
40 9 0.9
50 2 1
50 5 3.5
50 7 0.7
50 9 1.8
60 2 0.4
60 5 0.5
60 7 4.9
60 9 4.5
70 2 0.2
70 5 1
70 7 3.5
70 8 5.6 ];
tri = delaunay(xyz(:,1), xyz(:,2));
trimesh(tri, xyz(:,1), xyz(:,2),xyz(:,3));
shading interp