Understanding Meshgrid, interp3 and scatter3
조회 수: 18 (최근 30일)
이전 댓글 표시
I have some 3d-simulation data I want to process in matlab using the scatter3 function, but despite reading all the documentation and looking for tips I'm stuck.
Current code:
load('TE_period_150nm_testres.mat');
Ex=Monitors.model_volumepower.Ex;
Ey=Monitors.model_volumepower.Ey;
Ez=Monitors.model_volumepower.Ez;
Ex=abs(Ex);
Ey=abs(Ey);
Ez=abs(Ez);
mag=sqrt(Ex.^2+Ey.^2+Ez.^2);
x=Monitors.model_volumepower.x;
y=Monitors.model_volumepower.y;
z=Monitors.model_volumepower.z;
x2 = linspace(min(x),max(x),max([length(x) length(y) length(z)]));
y2 = linspace(min(y),max(y),max([length(x) length(y) length(z)]));
z2 = linspace(min(z),max(z),max([length(x) length(y) length(z)]));
[X,Y,Z] = meshgrid(z,y,x);
[X2,Y2,Z2] = meshgrid(z2,y2,x2);
magnew = interp3(X,Y,Z,mag,X2,Y2,Z2);
Mag is a 61*74*53 matrix, x y and z are vectors of size 61, 74 and 53 respectively. I understand Mag needs to become an M*M*M-matrix to work for scatter3. I tried to make a new 74*74*74-matrix (spanning the same range) and use interp3 to interpolate required values. For some reason, all my magnew-values become NaN.
Who can help me out?
(If I can fix this, I'll still have four 3d-matrices (for x, y, z and magnitude) whereas scatter3 apparently needs one long vector. Can I just fix that using
for i=1:length(magnew).^3
magfinal(i)=magnew(i)
end
where I'm basically making it one long vector? (Same for x, y and z)
Thanks a lot in advance!
댓글 수: 1
Chad Gilbert
2013년 7월 12일
Generally, you would use scatter3 to do something like e.g. show where a set of data points are located in 3D. So it might be interesting to look at something like:
scatter3(x, y, z);
But you've interpolated a scalar value onto a regular 3D grid. It might be interesting to look at something like (untested):
scatter3(X(:),Y(:),Z(:),mag(:));
which will use the color of each scatter point to show you the color, but I would expect this to be quite ugly and difficult to make sense of. It's generally very hard to visualize a scalar field in 3D on a 2D monitor.
If it were me, I'd try plotting several 2D slices through the graph using pcolor.
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!