matlab怎么用三维矩阵画三维图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎么用三维矩阵画三维图相关的知识,希望对你有一定的参考价值。

现有三维矩阵A(3*3*5),
A(:,:,1)=[0,0,0;0,1,0;0,0,0]
A(:,:,2)=[0,0,0;1,1,1;0,0,0]
A(:,:,3)=[0,0,1;1,1,1;1,0,0]
A(:,:,4)=[0,1,1;1,1,1;1,1,0]
A(:,:,5)=[1,1,1;1,1,1;1,1,1]
怎么用三维图把A显示出来?

1、对于三维图形其有x、y、z三个坐标轴,数据也要按三维确定,如图所示,下面是部分单位数据样例。

2、首先需要将数据读取到MATLAB工作空间(workspace)中,使用xlsread()函数即可,使用绝对路径读取,因为不在MATLAB默认路径内。

3、接着,需要将x1、y1、z1数据分别从矩a中提取出来。

4、然后使用三维散点图函数scatter3()显示x1、y1、z1三组数据在空间上的点。

5、在画图的时候,数字肯定只有一组数据,运行代码hold on;即可读取第二组数据。

6、接着再次对x2、y2、z2数据绘制空间分布点,运行:scatter3(x2,y2,z2,'p');此处的p和k是一样的意思,代表的是五角星点。

7、接下来,在加上坐标轴即可,运行:xlabel('x'),ylabel('y'),zlabel('z')。

8、然后我们就完整的绘制好了三维图了。

参考技术A 一维数组需要绘制二维平面图
二维数组需要绘制三维图
三维数组加上数字信息,需要表达4维信息,4维图才能画。这是不可能画出来的,当然可以使用别的信息表示数字,比如颜色。不同的颜色表示不同的数值。即对应三维坐标上的数值使用颜色进行表示。就像热谱图一样。追问

那应该怎么用什么函数啊?

追答

楼下liuf412044725正解,你可以参考一下。就是画出x,y,z图然后用A矩阵作为颜色信息进行染色。

参考技术B [X,Y,Z]=meshgrid(1:3,1:3,1:5);
figure,scatter3(X(:),Y(:),Z(:),5,A(:))
axis equal

其中0为蓝色,1为褐色
参考技术C for ii=1:5
for jj=1:3
for kk=1:3
plot3(A(kk,jj,ii)(1),A(kk,jj,ii)(2),A(kk,jj,ii)(3)],hold on;
end
end
end

matlab画三维空间劣弧,matlab 三维空间画图总结

matlab 三维画图总结

1.画函数的三维图,如:Z(X,Y)=2*X.*exp(-X.^2-Y.^2)+1;

close all;

[X,Y]=meshgrid(-2:0.5:2,-2:0.5:2);%生成坐标轴

Z=2*X.*exp(-X.^2-Y.^2)+1;%Z是X,Y的函数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=0;

num=num+1;

subplot(2,3,num);

plot3(X,Y,Z);

axis([-3 3 -3 3 0 2]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(1)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

mesh(X,Y,Z);

axis([-3 3 -3 3 0 2]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(2)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

meshc(X,Y,Z);

axis([-3 3 -3 3 0 2]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(3)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

surf(X,Y,Z);

axis([-3 3 -3 3 0 2]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(4)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

meshz(X,Y,Z);

axis([-3 3 -3 3 0 2]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(5)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

surf(X,Y,Z);

hold on;

stem3(X,Y,Z,'r');%画竖线

axis([-3 3 -3 3 0 2]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(6)');%标题

2.画矩阵的三维图

clc;

clear all;

close all;

X=[0 1 2 3 4 5 6 7 8 9];

Y=[0 1 2 3 4 5 6 7 8 9];

for i=1:1:length(X)

for j=1:1:length(Y)

Z(i,j)=mod(i*j*rand(1),9);

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=0;

num=num+1;

subplot(2,3,num);

plot3(X,Y,Z);

axis([0 9 0 9 0 9]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(1)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

mesh(X,Y,Z);

axis([0 9 0 9 0 9]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(2)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

meshc(X,Y,Z);

axis([0 9 0 9 0 9]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(3)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

surf(X,Y,Z);

axis([0 9 0 9 0 9]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(4)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

meshz(X,Y,Z);

axis([0 9 0 9 0 9]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(5)');%标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=num+1;

subplot(2,3,num);

surf(X,Y,Z);

hold on;

stem3(X,Y,Z,'r');%画竖线

axis([0 9 0 9 0 9]);%限定显示的范围

xlabel('x轴');%x轴坐标

ylabel('y轴');%y轴坐标

zlabel('z轴');%z轴坐标

title('http://blog.csdn.net/nuptboyzhb/ figure(6)');%标题

3.画矩阵的颜色深度图

我自己编写的一个函数:graycolor.m

%filename:graycolor.m

%郑海波 2013-01-31

%http://blog.csdn.net/nuptboyzhb/

%原理:灰度图像的伪彩色处理

%值越大,显示的颜色越蓝,越小,显示的颜色越红!

%参数:newbuf必须使二维数组或矩阵

function graycolor(newbuf);

min_n=min(min(newbuf));

max_n=max(max(newbuf));

newbuf=newbuf./(max_n-min_n)*255;

[M N]=size(newbuf);

for i=1:1:M

for j=1:1:N

R(i,j)=GrayColorR(newbuf(i,j));

G(i,j)=GrayColorG(newbuf(i,j));

B(i,j)=GrayColorB(newbuf(i,j));

end

end

img(1:1:M,1:1:N,1)=R(1:M,1:N);

img(1:1:M,1:1:N,2)=G(1:M,1:N);

img(1:1:M,1:1:N,3)=B(1:M,1:N);

imshow(uint8(img));

function r=GrayColorR(gray)

r=0;

if gray>=170

r=255;

end

if gray>=128&&gray<=170

r=255/42*(gray-128);

end

return;

function g=GrayColorG(gray)

g=0;

if gray>=84&&gray<=170

g=255;

end

if gray<=84

g=255/84*gray;

end

if gray>=170&&gray<=255

g=255/85*(255-gray);

end

return;

function b=GrayColorB(gray)

b=0;

if gray<=84

b=255;

end

if gray>=84&&gray<=128

b=255/44*(128-gray);

end

return;

函数的调用:

[X,Y]=meshgrid(-2:0.01:2,-2:0.01:2);%生成坐标轴

Z=2*X.*exp(-X.^2-Y.^2)+1;%Z是X,Y的函数

graycolor(Z);

title('http://blog.csdn.net/nuptboyzhb/');%标题

另外,在\\matlab2009a\\toolbox\\matlab\\demos\\graf3d.m中文件,有更加详细的介绍。界面如下:

以上是关于matlab怎么用三维矩阵画三维图的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB中用mesh函数画出三维图后,怎么添加一个Z=0的平面?

Origin如何进行三维图绘制

怎样用origin画出三维图

matlab或Origin四维图怎么画(三维坐标+颜色值)

Matlab中如何绘制三维数据体

matlab 三维直线怎么画