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!