101 views (last 30 days)

Show older comments

I would like to find the contours, manipulate them, and then plot them.

This plots contours

x = 0:0.1:1; y = 0:0.1:1;

[X,Y] = meshgrid(x,y);

Z = sin(X).*cos(Y);

[con_mat, h] = contour(x, y, Z);

To get the contour information without plotting, can use contourc.

con_mat = contourc(x, y, Z);

However, there appears to be no built-in way to plot this "contour matrix".

Any thoughts?

John

Darin
on 5 Jun 2012

Try this: it uses cplot, which you can find on Matlab central.

If you find something more elegant, please let us all know... it MUST be buried in the Matlab library function SOMEWHERE.

function[] = plot_contourmatrix(C);

% plot_countourmatrix - Plots a contour matrix c as returned from contour

%

% plot_contourmatrix(C)

% Rev History:

% 06-04-12 Created

figure(gcf);

holdstate = ishold;

hold on;

i = 1;

while i<=length(C)

lev = C(1,i);

cnt = C(2,i);

cplot(C(1,i+(1:cnt)),C(2,i+(1:cnt)),repmat(lev,1,cnt));

i = i+cnt+1;

end;

if ~holdstate

hold off;

end;

return

test code - execute as cell

figure(1);

[x,y] = meshgrid(-3:.1:3);

z = sinc(hypot(x,y));

[C,h] = contour(x,y,z);

axis equal

figure(2)

plot_contourmatrix(C);

axis equal

Liviu Ivanescu
on 18 Aug 2018

Edited: Liviu Ivanescu
on 18 Aug 2018

Here is a way to plot contourc data containing several contours of the same value.

cnt = contourc(matrix,[-2 -2]);

szc = size(cnt);

idz = 1;

while idz<szc(2)

izi = cnt(2,idz);

cnt(2,idz) = nan;

idz = idz+izi+1;

end

plot(cnt(1,:),cnt(2,:))

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

Start Hunting!