
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 展开
代码:
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 展开
1个回答
展开全部
追问
谢谢!问题已解决。我想截取三维图中心矩形区域(把|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软件用户提供咨询、技术支持,主办和协办相关科学会议以及公益性讲座,为在读研究生提供奖学金,为相关会议和科学研究者提供项目资助,...
点击进入详情页
本回答由国际衍射数据中心提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询