generating a 3d surface from from [x,y,z,c] matrix

1 visualización (últimos 30 días)
Abdulelah Alswaiyd
Abdulelah Alswaiyd el 5 de Jun. de 2020
Comentada: Andreas Bernatzky el 15 de Jun. de 2020
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.
  2 comentarios
KSSV
KSSV el 5 de Jun. de 2020
Attach your data.
Abdulelah Alswaiyd
Abdulelah Alswaiyd el 7 de Jun. de 2020
here is the attached data.
Thank you

Iniciar sesión para comentar.

Respuestas (1)

Andreas Bernatzky
Andreas Bernatzky el 7 de Jun. de 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 comentarios
Andreas Bernatzky
Andreas Bernatzky el 15 de Jun. de 2020
Editada: Andreas Bernatzky el 15 de Jun. de 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);
Andreas Bernatzky
Andreas Bernatzky el 15 de Jun. de 2020
@darova
should also work yes. I have not thought about it.

Iniciar sesión para comentar.

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Productos


Versión

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by