声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10590|回复: 12

[绘图技巧] 关于 matlab 三维制图的问题

[复制链接]
发表于 2007-9-28 09:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
用matlab可以表示c=c(x,y,z)这样的函数么?
象surf(x,y,z,c)
画出c=x^2+y^2+z^2的图可以么?
0<x<10
0<y<10
0<z<10

Ref : 〔示例〕关于 matlab 四维图的绘制问题
http://forum.vibunion.com/forum/thread-52593-1-2.html  (By ChaChing)

[ 本帖最后由 ChaChing 于 2010-7-25 00:42 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-9-28 09:35 | 显示全部楼层
用plot3d,请查看本版的精华帖。
 楼主| 发表于 2007-9-28 10:10 | 显示全部楼层
可以告诉下精华帖的名字么。。好多精华看的头大了。。谢谢哦

我刚才查过书了,plot3是不能描述我要的函数的,他只能画3维空间的点线图。
注意我的函数,是3个自变量,也就是4维的。
按照课本,surf,mesh可以表示4维。如下:
mesh(x,y,z,c):四维作图,(x,y,z)代表空间3维,c代表颜色
但是我用这个函数老出错。。暴汗中。。

[ 本帖最后由 ChaChing 于 2010-4-17 23:19 编辑 ]
发表于 2007-9-28 10:16 | 显示全部楼层
这种问题最好自己 help 一下,收获更大

[ 本帖最后由 ChaChing 于 2010-4-17 23:17 编辑 ]
 楼主| 发表于 2007-9-28 10:22 | 显示全部楼层
我试过了,说我的维数不对
我的m文件是
[x, y,z] = meshgrid(0:1:10, 0:1:10,0:1:10);
%定义函数
c=x.^2+z.^2+y.^2
surf(x,y,z,c)
得到的结果是
??? Error using ==> surface
CData must be an M-by-N matrix or M-by-N-by-3 array.

Error in ==> G:\matlab\toolbox\matlab\graph3d\surf.m
On line 68  ==> hh = surface(varargin{:});

Error in ==> G:\matlab\work\ai11.m
On line 7  ==> surf(x,y,z,c)
维数不对,可是我不知道怎么改了,按理就应该是3维数组啊。可是。。。
发表于 2007-9-28 10:28 | 显示全部楼层
CData must be an M-by-N matrix or M-by-N-by-3 array.


这是该命令的语法要求,你看看你的 C 矩阵是否满足,然后认真看看帮助中的例子

[ 本帖最后由 eight 于 2007-9-28 10:33 编辑 ]
发表于 2007-9-28 15:29 | 显示全部楼层
原帖由 水私语 于 2007-9-28 09:13 发表
用matlab可以表示c=c(x,y,z)这样的函数么?
象surf(x,y,z,c)
画出c=x^2+y^2+z^2的图可以么?


你需要注意一下几点:

(1)c=c(x,y,z)是四维关系,而matlab只能绘制2维和3维图
(2)surf(x,y,z,c)使用来绘制表面图的,不过c只是一个颜色控制参数,而不是你所指的第四维。各个参数的维数关系
        请多看看帮助文档。
(3)如果是想用c指定的颜色来绘制对应的xyz三维点,那么没有现成三维绘制指令可用。

下面的程序可以近似完成你所需要的功能。
clear,clc
N=10; x=0:N; y=0:N; L=(N+1)^2;
[X,Y]=meshgrid(x,y);
Z=X^2-5*X.*Y+Y.^2;%定义绘图函数
a=max(X(:));b=max(Y(:));c=max(Z(:));
for i=1:L;
    co=[X(i)/a Y(i)/b Z(i)/c];%定义颜色映射矩阵,需要注意在matlab里颜色通常是用一
                                      %个长度为3 的向量表示,而不是你说给的一个参数c
    axis([0 a 0 b 0 1100]); text(X(i),Y(i),Z(i),'*','fontsize',30,'color',co);
end
figure(2); surf(X,Y,Z)

[ 本帖最后由 ChaChing 于 2010-8-3 23:52 编辑 ]

评分

1

查看全部评分

发表于 2007-9-28 15:49 | 显示全部楼层
MATLAB能画四维图吗??不晓得可不可以用控件,作为一个维数?等待高手解答...
发表于 2007-9-28 16:30 | 显示全部楼层

回复 #9 yufeng0525 的帖子

四维的函数关系,还是比较容易理解的。但是四维的空间理解起来就难了(实际上空间三维就足够表述了)

   你的用控件做一个维数是什么意思呢?坐标轴有几个呢?

[ 本帖最后由 mjhzhjg 于 2007-9-29 13:12 编辑 ]
 楼主| 发表于 2007-9-29 12:45 | 显示全部楼层
谢谢帮忙哦。。。。:handshake
发表于 2007-9-29 15:42 | 显示全部楼层
四维空间的话,把时间理解为一个维数啊
发表于 2007-9-29 16:21 | 显示全部楼层

回复 #12 yufeng0525 的帖子

谢谢你的意见,不过就绘图而言。应该是没法绘制4维的,因为根本没有4维坐标系。如果把时间理解为第四维,那就是不同的三维图了。可以考虑做成三维动画的形式,因为动画就是包含时间信息
发表于 2012-12-24 17:03 | 显示全部楼层
学习了,谢谢!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-13 12:31 , Processed in 0.077079 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表