shfaye 发表于 2008-1-22 09:39

用MATLAB画3D图像的问题.

大家好。我刚用MATLAB. 需要高手的帮忙.

我做数据挖掘, 要弄数据成像. 现在我有一个文件. 里面有上万个点. 比如说..
X    Y    Z

0.0    0.0    0.24325877219371428
-119.0    0.0214    -0.38536714085245105
-9.0    0.0642    -0.6639905962684893
-68.0    0.0856    -0.2110314044309649
-118.0    0.107    -0.12362223791790816
-89.0    0.107    -0.7208892321557419
-53.0    0.1498    -0.011445394635502648
-115.0    0.214    -0.03919114965828285
-74.0    0.2354    0.05074486039127324
.            .            .
.            .            .
.            .            .
.            .            .


我怎么才能用这写数据画出一个3D图像呢?

plot3(x,y,z) 可以画出,但只是点连接着点. 非常不直观. 怎么样画的想mesh等有曲线的图像呢?

我以前是用在JAVA里生成的2D图像. Z的值用不同的颜色来表示.(附件).

现在想通过MATLAB生成3D的图像. 就好像 MESH(PEAKS(25))或者 SURF 一类的曲线图像.

希望懂的朋友可以给点指点.

谢谢大家了

[ 本帖最后由 shfaye 于 2008-1-22 09:20 编辑 ]

shfaye 发表于 2008-1-22 09:57

拟合对于上万个点来说是不可能的吧? 或者很复杂? 我想像不出来一个曲面穿过上万个点的图像是怎么样.....需要TIPP:mad:

maedebach 发表于 2008-1-22 15:24

mesh()

shfaye 发表于 2008-1-22 15:40

mesh()这些都需要函数或者MATRIX.我现在只有点

911Turbo 发表于 2008-1-26 23:09

试试看griddata,看一下帮助里面的例子

shfaye 发表于 2008-1-27 14:44

哦。忘记过来回帖了. 问题当天就解决了.....

我把数据分离了出来. 分别储存为3个文件. X 文件里面放的所有的 X的值, 一行(一列也无所谓), Y文件里放所有Y文件的值, Z文件里放的Z的MATRIX.

1 2 3 4 5 6 7 .....
1 x x x x x x x
2 x x x x x x x
3 x x x x x x x
4 x x x x x x x
5 x x x x x x x
.
.
.

有了X,Y和Z 的MATRIX. 问题就解决了.
MESH(X,Y,Z).

呵呵~~

当初的POLT3画出来的现在还不知道是什么.$frage$

aileute 发表于 2008-1-27 14:47

用mesh画完,在用hold on,然后再用plot3(x,y,z, '*'),就知道了,就是你对应的数据点。

shfaye 发表于 2008-1-27 15:42

3D图片.....

大肚飞天牛 发表于 2008-2-21 13:52

LZ你好。我现在也有你这个问题。我现在有3列数据。我想把第一列存为matrix X,第二列为Y,第三列为matrix Z。我是这么弄的。

    =textread('filenamen.txt',%f%f%f);
    X=;
    Y=;
    Z=;
   
然后,我就用mesh(X,Y,Z).但始终用错:
??? Error using ==> mesh
Z must be a matrix, not a scalar or vector.

我要用什么命令才能让X,Y,Z是作为matrix存储呢。
$frage$

大肚飞天牛 发表于 2008-2-21 13:56

LZ快来啊。我真的很急于想解决问题啊。:mad:

熊猫羊 发表于 2008-2-21 14:00

before
mesh
run meshgrid

see help file

shfaye 发表于 2008-2-21 16:38

原帖由 大肚飞天牛 于 2008-2-21 12:56 发表 http://dolc.de/forum/images/common/back.gif
LZ快来啊。我真的很急于想解决问题啊。:mad:

HI,我是分为3个文件储存的,当然你也可以储存在一个文件里. 我的X文件里是储存的所有的X的值, 一行一列无所谓
比如说1 2 3 4 5 6 7 8 ....
Y文件里储存的所有Y的值1 2 3 4 5 6 7 8 ....

Z文件里储存的所有Z的值, 以 MATRIX方式排列
Z11 Z12 Z13 Z14 ...
Z21 Z22 Z23 Z24 ...
Z31 Z32 Z33 Z34 ...
Z41 Z42 Z43 Z44 ...
.   .   .   .   ...
.   .   .   .   ...
.   .   .   .   ...

然后就可以了. 你的Z不是MATRIX的排列方式, 所以不能读入. 你仔细看看你的Z这个变量里到底是什么, 就会发现错误了. 一般来说是2维的数组ARRAYLIST,比如说30×30...

大肚飞天牛 发表于 2008-2-21 23:18

原帖由 shfaye 于 2008-2-21 15:38 发表 http://www.dolc.de/forum/images/common/back.gif


HI,我是分为3个文件储存的,当然你也可以储存在一个文件里. 我的X文件里是储存的所有的X的值, 一行一列无所谓
比如说1 2 3 4 5 6 7 8 ....
Y文件里储存的所有Y的值1 2 3 4 5 6 7 8 ....

Z文件里储存的所 ...
非常谢谢你的答复。我马上去试试。希望能成功。$支持$

昵称已满 发表于 2008-2-25 22:18

原帖由 大肚飞天牛 于 2008-2-21 12:52 发表 http://www.dolc.de/forum/images/common/back.gif
LZ你好。我现在也有你这个问题。我现在有3列数据。我想把第一列存为matrix X,第二列为Y,第三列为matrix Z。我是这么弄的。

    =textread('filenamen.txt',%f%f%f);
    X=;
    Y=;
    Z= ...

%下面是Help文档里面的
%   MESH(x,y,Z) and MESH(x,y,Z,C), with two vector arguments replacing
%   the first two matrix arguments, must have length(x) = n and
%   length(y) = m where = size(Z).In this case, the vertices
%   of the mesh lines are the triples (x(j), y(i), Z(i,j)).
%   Note that x corresponds to the columns of Z and y corresponds to
%   the rows.
%   你读入的数据要满足条件才能用Mesh,也就是length(x) = n and
%   length(y) = m where = size(Z)
:)

大肚飞天牛 发表于 2008-2-26 06:19

原帖由 昵称已满 于 2008-2-25 21:18 发表 http://dolc.de/forum/images/common/back.gif


%下面是Help文档里面的
%   MESH(x,y,Z) and MESH(x,y,Z,C), with two vector arguments replacing
%   the first two matrix arguments, must have length(x) = n and
%   length(y) = m where = si ...

谢谢mm的答复。问题前几天已经解决。我当时把问题想复杂了。其实最后用plot3()就搞定了。$汗$

qqsweet 发表于 2008-5-8 15:15

$送花$ $送花$ 正好用上了

prune 发表于 2008-5-9 00:18

原帖由 shfaye 于 2008-2-21 16:38 发表 http://www.dolc.de/forum/images/common/back.gif


HI,我是分为3个文件储存的,当然你也可以储存在一个文件里. 我的X文件里是储存的所有的X的值, 一行一列无所谓
比如说1 2 3 4 5 6 7 8 ....
Y文件里储存的所有Y的值1 2 3 4 5 6 7 8 ....

Z文件里储存的所 ...
$支持$
我有个问题,原数据中X Y Z是一一对应的
即:如果X有10行数,Y也有10行数,Z对应的也是10行数
怎么让10行数的Z变成10×10=100个数?
Z11 Z12 Z13 ...
Z21 Z22 Z23 ...
Z31 Z32 Z33 ...
......
其中的Z11...是怎么来的?

可能是很简单的问题,但我想不通$害羞$ 麻烦帮我解惑,非常感谢$送花$

prune 发表于 2008-5-9 19:48

LZ来看看吧:)

姽婳将军 发表于 2008-7-22 23:07

原帖由 prune 于 2008-5-9 00:18 发表 http://www.dolc.de/forum/images/common/back.gif

$支持$
我有个问题,原数据中X Y Z是一一对应的
即:如果X有10行数,Y也有10行数,Z对应的也是10行数
怎么让10行数的Z变成10×10=100个数?
Z11 Z12 Z13 ...
Z21 Z22 Z23 ...
Z31 Z32 Z33 ...
......
其 ...

你这个问题是自己遇到的还是想象的?

一般是x是100个, y是100个, z是100个。

用mesh时是x10行, y10行, z是10x10。

没事闲的 发表于 2008-11-22 17:09

问题在于Matlab不认你的Z 不是Matrix你要看看Z到底是不是个Matrix并且它的行和列是否和X,Y的一样。

uvwx559 发表于 2008-11-26 20:22

在香港吃过

东芝空调维修
威力空调维修
三钻空调维修
将军空调维修
乐华空调维修

nina84613 发表于 2009-5-19 10:56



HI,我是分为3个文件储存的,当然你也可以储存在一个文件里. 我的X文件里是储存的所有的X的值, 一行一列无所谓
比如说1 2 3 4 5 6 7 8 ....
Y文件里储存的所有Y的值1 2 3 4 5 6 7 8 ....

Z文件里储存的所 ...
shfaye 发表于 2008-2-21 16:38 http://www.dolc.de/forum/images/common/back.gif


wie kann ich den Z-Vektor in Z-Matrix umwandeln??

Lao 发表于 2009-5-19 15:47

严重怀疑中,z-Matrix?楼主确定得到你想要的结果了?到底是要3d曲线,还是要3d曲面?

nomade 发表于 2009-9-23 10:51

好帖啊

nobkj 发表于 2012-5-31 03:49

全球塑料网 aaab2b.com











static/image/common/sigline.gif
肇庆网站设计 qiyouseo.com

Quastenflosser 发表于 2014-1-28 23:47

个人经验(数据可改)
x=linspace(0,10,10); %x的区间是0到10, 分成10分,最后一个值可以改得更密集点
y=linspace(0,10,10);
=meshgrid(x,y);
Z=X+Y;
figure()
mesh(X,Y,Z)
页: [1]
查看完整版本: 用MATLAB画3D图像的问题.