generating a 3d surface from from [x,y,z,c] matrix
조회 수: 1 (최근 30일)
이전 댓글 표시
Dear all,
I have a dataset in a 8261x4 matrix where the first 3 columns represent x,y,z coordinate and the fourth column vlaues are ones as in the figure below:
thses are sunrays hitting a rectangular surface. the ones represent the power per ray. I want to generate a surface like in the next figure (it is a 2d plot using x&z only):
in the previous figure, the surface devidied by 25x25 (resolution) and the ones in the fourth column in the matrix were summed based on the grid resolution.
I include the y-axis because I have another data for tilted surfaces (3D), the end goal is to plot the flux map on multiple panels (shown in the figure below) and each panel will have a data like the martix I showed previously.
Thank you.
답변 (1개)
Andreas Bernatzky
2020년 6월 7일
Hey Abdulelah,
I have made some approaches with density3D from:
should do the job for you. I have attached 2 images one with scatter3 and one with density 3D
posXvals = raydata1{:,1}
posYvals = raydata1{:,2};
posZvals = raydata1{:,3};
figure(1)
scatter3(posXvals,posYvals,posZvals);
figure(2)
density3D(posXvals',posZvals');
댓글 수: 5
Andreas Bernatzky
2020년 6월 15일
편집: Andreas Bernatzky
2020년 6월 15일
Hey Abduleah,
sorry for my late reply.
If you want to have the density actual as some numeric value for example Rays/Panel you calculate it by Thresholds and extracting correct x and y values. For example what I mean:
The panel in the mid on your isometric view reaches roughly from x: -0.8 to 0.8
easiest approach would be defining thresholds for each panel and find the amount of rays per panel by using the "find()" command.
Rough Exampel:
rayOnMidPanel = find(x>=-0.8 && x<= 0.8);
참고 항목
카테고리
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!