Finding Coordinates of Multiple Contours

조회 수: 1 (최근 30일)
Brian DeCicco
Brian DeCicco 2021년 5월 21일
댓글: Adam Danz 2021년 5월 28일
Hello, I am working with a dataset and trying to find the coordinates (lat/long) of each contour drawn from my loop. When I run the loop, each new iteration replaces the the previous position data of the last contour drawn, and I wish to get the position data for all 40 lines drawn contained within the same matrix. The position data of the line (and each line) should be stored under the variable "C" which is a 2 x ? double matrix. I appreciated any assistance you may be able to provide! Below is my code thus far:
for n = 1:40
[C,h] = contour(long3,lat3,squeeze(yearly_array2(:,:,n))',[287 287],'y');
end
  댓글 수: 2
Adam Danz
Adam Danz 2021년 5월 21일
편집: Adam Danz 2021년 5월 21일
There are lots of functions on the file exchange that get the contour line coordinates.
Brian DeCicco
Brian DeCicco 2021년 5월 21일
Thank you Adam, your response here was really helpful as well and I will try these in my coding!

댓글을 달려면 로그인하십시오.

채택된 답변

KSSV
KSSV 2021년 5월 21일
C = cell(40,1) ;
H = cell(40,1)
for n = 1:40 ;
[c,h] = contour(long3,lat3,squeeze(yearly_array2(:,:,n))',[287 287],'y');
C{n} = c ;
H{n} = h ;
end
celldisp(C)
  댓글 수: 2
Brian DeCicco
Brian DeCicco 2021년 5월 21일
Thank you! I very much appreciate your help. 1 final question based on this...if I wanted to loop through each point associated with each of the 40 contours and plot the max and min value y-values (i.e. lattitude) at each x-value (i.e. longitude) based on your code above, how would you recommend coding that up most efficiently?
Adam Danz
Adam Danz 2021년 5월 28일
@Brian DeCicco There are some files on the file exchange that organize the contour matrix output into a table, a structure, or a cell array. Here's a list:

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Steven Lord
Steven Lord 2021년 5월 21일
Why create the contours one at a time? Why not pass a vector of contour levels to the contour function and either parse the ContourMatrix property of the contour object or the contour matrix returned as the first output of contour? This will also eliminate the need to break the ambiguity of whether a scalar value represents a number of contours to plot or the height at which to plot one single contour line.
[X, Y, Z] = peaks;
surf(X, Y, Z);
hold on
[C, h] = contour3(X, Y, Z, -5:5, 'r'); % I could also have used surfc
shading interp
C(:, 1)
ans = 2×1
-5 25
This tells me the contour at z = -5 has 25 points.
C(:, 1+25+1) % 1 (first element) + 25 (points on first contour) + 1 (move to start of next contour)
ans = 2×1
-4 35
The contour at z = -4 has 35 points, etc.

카테고리

Help CenterFile Exchange에서 Contour Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by