3D Surface Plot With Only Vectors

24 ビュー (過去 30 日間)
Dan
Dan 2011 年 8 月 18 日
コメント済み: Image Analyst 2021 年 9 月 4 日
I'm trying to make surface plots based on data from a satellite. All of the standard surface functions ('surface', 'contour', 'pcolor', etc.) require one of the fields to be a matrix, but the data I'm trying to plot is all in vectors. For instance, I have vectors for latitude and longitude of each reading, then a vector of the elevation read at each point. And the vectors are of considerable length, so I'm trying to use as little memory as possible for each plot.
'plot3(Lon, Lat, Elev)' almost gives me what I need, except I still can't put a detailed colormap to the elevation data. Ideally, I want to be able to look at the x-y plane and easily see the changes in elevation with the help of the colorbar.
Any ideas on a better function to use? Or is there a way to somehow get my elevation data into a matrix that doesn't give me a large, sparse matrix?
Thanks
  1 件のコメント
Youssef Wehbe
Youssef Wehbe 2020 年 4 月 1 日
I have an aircraft dataset and would like to plot a 3D flight track (lat,lon,elev) and color the markers according to a depth (dust concentration in my case). Any help is greatly appreciated!

サインインしてコメントする。

回答 (4 件)

Babak Salarieh
Babak Salarieh 2019 年 1 月 2 日
編集済み: Image Analyst 2021 年 9 月 4 日
I would suggest watching this video:
Although it is in regard to 3D surface, it works for the case of contours as well.
  4 件のコメント
Majid
Majid 2021 年 9 月 4 日
It is somehow strange! The link to the video is clickable, but when you click on it, you will be directed to the same page as the current page! However, you still can copy and paste the link manually to watch the video.
Image Analyst
Image Analyst 2021 年 9 月 4 日
@Majid when @Babak Salarieh inserted the link, he had #null for the URL and the URL for this thread as the displayed text, so it just went to this page. I changed the URL to that of the blog, so it's now fixed. Thanks for alerting us.

サインインしてコメントする。


Fangjun Jiang
Fangjun Jiang 2011 年 8 月 18 日
This should work. Adjust the CircleSize for better result. See scatter3() for more options.
CircleSize=100;
figure;h1=stem3(Lon,Lat,Elev,'filled');
figure;h2=scatter3(Lon,Lat,Elev,CircleSize,Elev,'s','filled');
view(2);

Patrick Kalita
Patrick Kalita 2011 年 9 月 8 日
Have you looked at trisurf?
The idea is that you first need to compute a triangulation of the (lat, lon) coordinates. The function delaunay will work fine. Then you can pass that along with the coordinate vectors to trisurf. Here's an example:
% make up some data
lat = rand(1,300)*6 - 3;
lon = rand(1,300)*4 - 2;
elev = peaks(lat, lon);
% triangulate and plot
tri = delaunay(lat, lon);
trisurf(tri, lat, lon, elev);
% optional, could help make the plot look nicer
shading interp
  1 件のコメント
Edwin Fonkwe
Edwin Fonkwe 2017 年 1 月 17 日
Doesn't work if vectors are collinear, apparently

サインインしてコメントする。


Sanoop Siby
Sanoop Siby 2020 年 3 月 10 日
If anyone knows the answer please post, I would appreciate it.
  1 件のコメント
Youssef Wehbe
Youssef Wehbe 2020 年 4 月 1 日
I have an aircraft dataset and would like to plot a 3D flight track (lat,lon,elev) and color the markers according to a depth (dust concentration in my case). Any help is greatly appreciated!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by