3D Curtain plot for Lidar data
Mostrar comentarios más antiguos
I have geolocated lidar backscatter data from a flight that i need to plot.
The data are functions of time T and Altitude: Longitude(Time), Latitude(Time), LidarData(Time,Altitude).
The number of Time data points is >20,000 (entire flight) and number of Altitude data points is 600. So the LidarData is a large (20,000, 600) matrix.
In other words for each Time T have a location ( Longitude, Latitude) and LidarData at that location that extends from the ground to a specific altitude (the altitude for each location varies with time). All the 3D plots in Matlab allow a mesh, surface or scatter plot of X,Y,Z data.
I can plot individual scatter3 plots for each time (location) but with >20,000 points it takes a long time and the plot is imposisble to manipulate (change view angle, colorbar scale, etc.). Is there a better way to do this?
There is an existing (related) question on this but could not find an any answers: https://www.mathworks.com/matlabcentral/answers/4496-4d-curtain-plot
Respuestas (1)
darova
el 11 de Feb. de 2021
Can you plot only part of it?
clc,clear
[x,y,z] = peaks(100);
i = 1:5:100;
surf(x(i,i),y(i,i),z(i,i))
2 comentarios
darova
el 12 de Feb. de 2021
@HRmatlab's comment
Thank you for the suggestion. Yes I have plotted small segments.
Plotting the entire data set using a loop and scatter3 produces the desired plot but it takes > 30 minutes and makes the plot impossible to adjust (rotate, zoom, etc.).
The surf (or mesh) plots require an x, y mesh grid in other words x, y, z have to be NxM arrays.
I have x(N), y(N), z(N,M). Converting x,y to gridded arrays will slow things down.
But i will take another look. Than you for the feedback.
darova
el 12 de Feb. de 2021
Try griddata or scatteredInterpolant to create matrices and use surf
Categorías
Más información sobre Scatter Plots en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!