MATLAB Answers

# How to extract x and y position of contour line?

조회 수: 330(최근 30일)
K E 23 Jul 2015
댓글: Adam Danz 13 Apr 2021
In old matlab versions, I could extract x and y points along a contour line as shown below. This is incredibly useful in my work. Now in R2015 the approach doesn't work (hh.XData and hh.YData are the x and y values of the data you're contouring, rather than the x,y position of the contour line). In more recent versions of contour, how can I extract x,y points along a contour line? If I can't do it via contour, is there another way?
z = peaks; % Load in a dataset that all matlab users have
x = 1:size(peaks, 2); y = 1:size(peaks, 1);
figure;
pcolor(x, y, z); % Plot the data
shading flat;
hold on;
[cc, hh] = contour('v6', x, y, z, [0 10^5], 'k'); % Overlay contour line (will plot 3 continuous contours)
xPointsOfContour = get(hh(1), 'xdata'); % Get points along the first contour
yPointsOfContour = get(hh(1), 'ydata');
plot(xPointsOfContour, yPointsOfContour, 'w.'); % Demo that points on contour line were extracted

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

### 채택된 답변

K E 23 Jul 2015
Just realized that the contour matrix cc now seems to contain x and y location data,
pcolor(x, y, z); % Plot the data
hold on;
shading flat
[cc, hh] = contour(x, y, z, [0 10^5], 'k'); % Overlay contour line
hold on;
cc(cc<1) = NaN;
h = plot(cc(1,:), cc(2, :), 'w.');
##### 댓글 수: 6표시숨기기 이전 댓글 수: 5
Adam Danz 13 Apr 2021
What does velocity have to do with temperature? Are you asking how to compute the rate of temperature change at any point along the contour plot?
This is a completely different question than the topic in this thread. I encourage you to ask a new question.

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

### 추가 답변(2개)

John L 9 Jun 2017
Plot a single contour, then plot(hh.ContourMatrix(1,2:end),hh.ContourMatrix(2,2:end))
##### 댓글 수: 1표시숨기기 없음
Lars K. 12 Feb 2019
hi john,
with your answer you explained something very important using contour. I struggled and lost a lot of time, while i was trying to find intersections of two contour lines.
Plotting both contour matrix as lines and execute
[x,y,~,~]=intersection(contour1(1,:),contour1(2,:),contour2(1,:),contour2(2,:),true)
(btw thanks a lot to Douglas Schwarz) the intersection script found 6 intersections (4 wrong ones). Plotting both contour lines with markers i saw these other data points the first time.
The first column of the contour matrix M contains the value of the contour line and does not belong to the xy data points. With Johns little but important hint using
[x,y,~,~]=intersection(contour1(1,2:end),contour1(2,2:end),contour2(1,2:end),contour2(2,2:end),true)
the problem was solved and i got my two correct intersections.

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

Yuhang Luo 29 Jun 2018
##### 댓글 수: 1표시숨기기 없음
Adam Danz 23 Jan 2020
Also see
[cm, h] = contour(. . .);
contourTable = getContourLineCoordinates(cm);
% --or--
contourTable = getContourLineCoordinates(h);
% contourTable =
% Level Group X Y
% ________ _____ __________ __________
% -5.8504 1 -0.040982 -1.625
% -5.8504 1 -0.027916 -1.75
% -5.8504 1 0 -1.7823
% -5.8504 1 0.045032 -1.5
% etc....

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

### Community Treasure Hunt

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

Start Hunting!

Translated by