matlab,由几列数据画三维曲面。曲面分片着色问题

Zmax约为80,沿Z轴划分4个段,0~20,20~40,40~60,60~80,每个Z值范围对应一种颜色,利用surf(x,y,z,c)或mesh(x,y,z,c)着色... Zmax约为80,沿Z轴划分4个段,0~20,20~40,40~60,60~80,每个Z值范围对应一种颜色,利用surf(x,y,z,c)或mesh(x,y,z,c)着色。已成功画出三维图,但在分段着色时失败。做出后的图形如附件,数据在附件txt文本。

代码:
clear all, clc, close all;data = load('C:\Users\204\Desktop\sphere_r1um0.txt');
x = data(:,1);y = data(:,2);z = data(:,3);% 求出电场实部和虚部ExRe = data(:,4);EyRe = data(:,5);EzRe = data(:,6);ExIm = data(:,7);EyIm = data(:,8);EzIm = data(:,9);%计算电场强度Ex = ExRe + i*ExIm;Ey = EyRe + i*EyIm;Ez = EzRe + i*EzIm;A = (Ex).*conj(Ex)+(Ez).*conj(Ez)+(Ey).*conj(Ey)exn = A
nx = 100;ny = 100;for m = 1:nx; X(m) = x( ny*(m-1)+1);endY= y(1:ny);
Exn = reshape(exn,ny,nx);
%surf(X,Y,Exn)%or mesh(X,Y,Exn);c=zeros(ny,nx);for i=1:ny for j=1:nx if abs(exn)<20 c(i,j)=10; else if 20<=abs(exn)<40 c(i,j)=30; else if 40<= abs(exn)<60 c(i,j)=50; else c(i,j)=70;endendendend C=reshape(c,ny,nx);xa=-1:0.05:1;ya=xa;[x,y]=meshgrid(xa,ya);Exn=griddata(x,y,exn,X,Y,Exn,'v4');C=griddata(x,y,c,X,Y,'nearest');mesh(X,Y,Exn,C);colormap('hot')hold on;surf(X,Y,-50+0*Exn,Exn,'edgecolor','none','facecolor','interp')axis([-1 1 -1 1])
代码如图,请帮忙看看,谢谢@jimtien
展开
 我来答
jimtien
2015-02-11 · TA获得超过7656个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1170万
展开全部

这个要在colormap上做文章

z = peaks;
meshc(z)
mycolormap = [1 0 0;0 1 0;0 0 1;0 1 1];
colormap(mycolormap);
caxis([min(min(z)),max(max(z))]);
colorbar

追问
谢谢!问题已解决。我想截取三维图中心矩形区域(把|x|>0.5和|y|>5的部分去掉),该怎么做呢?尝试NaN,但失败了。有别的方法吗?如方便,能加Q吗?qq:2286667178,谢谢!x = data(:,1);y = data(:,2);z = data(:,3);ExRe = data(:,4);EyRe = data(:,5);EzRe = data(:,6);
追答
请给个采纳吧,谢谢。加2953212138
国际衍射数据中心
2025-02-25 广告
国际衍射数据中心(美国)北京代表处成立于2019年1月1日,是目前ICDD海外分支机构。旨在为PDF数据库和MDI软件用户提供咨询、技术支持,主办和协办相关科学会议以及公益性讲座,为在读研究生提供奖学金,为相关会议和科学研究者提供项目资助,... 点击进入详情页
本回答由国际衍射数据中心提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式