Пользовательский контурный график в MATLAB

Я хочу создать контурный график в MATLAB, как в второй пример на этой странице:

ContourPlot[Cos[x] + Cos[y] == 1/2, {x, 0, 4 Pi}, {y, 0, 4 Pi}]

Как видите, они рисуют только те линии, для которых f (X, Y) == some_value. Еще одна проблема, с которой я столкнулся, заключается в том, что на самом деле у меня нет функции f, а есть только набор точек типа [x, y, z] (считываемых из файла) и, конечно, some_value.

Можно ли сделать такой сюжет в MATLAB?


person adrianp    schedule 28.03.2012    source источник


Ответы (2)


Просто используйте функцию contour со вторым аргументом желаемых значений (это вектор из двух элементов вместо скаляра, чтобы отличить вызов функции от другого режима):

some_value = .5;
[x y] = meshgrid(linspace(0,4*pi,30),linspace(0,4*pi,30));
z = cos(x)+cos(y);
contour(x, y, z, [some_value, some_value])
person Itamar Katz    schedule 28.03.2012
comment
Спасибо. Будет ли это работать, учитывая, что x, y и z в моем случае представляют собой массивы разреженных точек, заданных в качестве входных данных? - person adrianp; 28.03.2012
comment
Редко в каком смысле? если это разреженное представление Matlab, то предполагается, что «отсутствующие» значения равны нулю, и это должно работать. Если у вас пропущены значения, вы не можете найти контур. - person Itamar Katz; 28.03.2012
comment
Мои файлы выглядят так: [-1, -1, 2], [-1, 0.99, 4], ... со значением [x, y, z] - person adrianp; 28.03.2012

Мне это помогло.

contourf(aX, aY, NM(:, :, k+1), 'ShowText','on', 'LevelStep', 0.4);
person Alexander Efimov    schedule 13.05.2021