From help:
[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2-Y.^2);
[C,h] = contour(X,Y,Z);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
colormap cool
Now I want to take only levels equal to 0.4
[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2-Y.^2);
[C,h] = contour(X,Y,Z);
set(h, 'LevelList', [ 0.4]);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
colormap cool
And now I want to get data that was displayed at figure and display it with 'plot' function.
figure;plot(C(:,1),C(:,2))
How to get data which I needed?

 採用された回答

Friedrich
Friedrich 2011 年 9 月 1 日

2 投票

EDIT: Code now handles different regions correctly.
Hi,
you can use the contour matrix together with inpolygon to get point inside the region:
For example:
hold on
[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2-Y.^2);
[C,h] = contour(X,Y,Z);
set(h, 'LevelList', [ 0.1 0.2 0.3]);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
colormap cool
x = reshape(X,1,numel(X));
y = reshape(Y,1,numel(Y));
cm = get(h,'ContourMatrix');
index_start = 2;
index_end = cm(2,1)+1;
IN = inpolygon(x,y,cm(1,index_start:index_end),cm(2,index_start:index_end));
for i=2:numel(get(h,'LevelList'))
index_start = index_end + 2;
index_end = index_start + cm(2,index_start-1) - 1;
tmp = inpolygon(x,y,cm(1,index_start:index_end),cm(2,index_start:index_end));
IN = IN | tmp;
end
plot(x(IN),y(IN),'r+');
hold off
figure
hold on
index_start = 2;
index_end = cm(2,1)+1;
plot(cm(1,index_start:index_end),cm(2,index_start:index_end))
for i=2:numel(get(h,'LevelList'))
index_start = index_end + 2;
index_end = index_start + cm(2,index_start-1) - 1;
plot(cm(1,index_start:index_end),cm(2,index_start:index_end))
end
plot(x(IN),y(IN),'r+')
hold off

3 件のコメント

Dmitry Borovoy
Dmitry Borovoy 2011 年 9 月 1 日
thanks a lot. That is what I need. But seems like that it works only for one level. There appear some artifacts when I tried to get 2 regions simultaneously
Friedrich
Friedrich 2011 年 9 月 1 日
Thanks for reporting. Fixed it. see modified code above.
K E
K E 2014 年 8 月 15 日
Really useful. Should be built in to the contour program or submitted to Fex.

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

その他の回答 (1 件)

Chad Greene
Chad Greene 2014 年 8 月 15 日

0 投票

C2xyz converts the contour matrix to x,y,z values easily.

カテゴリ

ヘルプ センター および File ExchangeContour Plots についてさらに検索

質問済み:

2011 年 9 月 1 日

回答済み:

2014 年 8 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by