3D Curtain plot for Lidar data
3 views (last 30 days)
Show older comments
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
0 Comments
Answers (1)
darova
on 11 Feb 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 Comments
darova
on 12 Feb 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.
See Also
Categories
Find more on 2-D and 3-D Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!