re-us 发表于 2010-10-17 09:54

这样的图如何用matlab画

比如用下面的代码产生一个填色的等值线图,然后把这个填色的等值线图放在不同的高度上。谢谢clc
clear = peaks(30);
contourf(X,Y,Z);

happy 发表于 2010-10-17 16:40

用四维切片等位线图,contourslice
问题应该不大

re-us 发表于 2010-10-18 03:16

这个命令好像只能做contour,不能填色。
给个例子吧,谢谢

happy 发表于 2010-10-18 05:34

本帖最后由 happy 于 2010-10-18 05:35 编辑

如果需要填充的话,可以先用slice得到切片图,然后用contourslice加上等值线
示例如下:

clf; =flow;         %取4个(50×25×25)的射流数据矩阵,V是射流速度。
x1=min(min(min(X))); x2=max(max(max(X)));      %取x坐标上下限
y1=min(min(min(Y))); y2=max(max(max(Y)));      %取y坐标上下限
z1=min(min(min(Z))); z2=max(max(max(Z)));   %取z坐标上下限
sx=linspace(x1+1.2,x2,5);          %确定5个垂直x轴的切面坐标
sy=[];                                 %在y=0处,取垂直y轴的切面
sz=[];                     %在z=0处,取垂直z轴的切面
slice(X,Y,Z,V,sx,sy,sz);          %画切片图
view([-12,30]); shading interp; colormap jet; axis off; colorbar
hold on;
v1=min(min(min(V)));v2=max(max(max(V))); % 射流速度上下限
cv=linspace(v1,v2,15); % 在射流上下限之间取 15 条等位线
contourslice(X,Y,Z,V,sx,sy,sz,cv);
太过复杂的图片,有的时候不太适合用matlab来做
尤其是一些流场的,医学方面的,往往都有专业的绘图软件更加方便

ChaChing 发表于 2010-10-19 11:31

本帖最后由 ChaChing 于 2010-10-19 13:56 编辑

大家起头, 小的小改!:@)
x1=min(min(min(X)));应该可以使用x1=min(X(:));

happy 发表于 2010-10-19 14:22

本帖最后由 happy 于 2010-10-19 14:22 编辑

效果是一样的,长时间没用matlab,个人用的方法通常会比较老

re-us 发表于 2010-10-22 08:59

谢谢大家的回复,继续问。

slice 对于规则的格点是没有问题的。我现在的问题是:我的格点的坐标不是规则,用slice总是出错。有没有其它更好的命令。
目的就是:把不同层次上的台风画到一张图上。比如现在我有地面这个层次上的,为了简化问题,就把这个层次上的图当做500hpa高度的。把这两个放到一起,组成一个三维图片(如1楼)。谢谢*****************************************************************************clc
clearload C:\Yalei\temp\YuanMa\data\LAT3.mat
load C:\Yalei\temp\YuanMa\data\LON3.mat
load C:\Yalei\temp\YuanMa\data\BT3.mat

load coast;
ch1=axesm( 'giso','Grid','off','MapLonLimit',,'MapLatLimit',);plotm(lat,long,'k');
setm(gca,'parallellabel','on','meridianlabel','on','plabellocation',5,'mlabellocation',4,...
    'labelformat','compass','fontsize',10,'fontweight','bold');
setm(gca,'mlabelparallel',0);
axes(ch1);
surfm(LAT1,LON1,BT1);
页: [1]
查看完整版本: 这样的图如何用matlab画