generating a 3d surface from from [x,y,z,c] matrix
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/310334/image.png)
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):
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/310337/image.png)
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/310340/image.png)
Thank you.
2 commentaires
Réponses (1)
Andreas Bernatzky
le 7 Juin 2020
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 commentaires
Andreas Bernatzky
le 15 Juin 2020
Modifié(e) : Andreas Bernatzky
le 15 Juin 2020
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);
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!