У меня есть матрица, три столбца которой соответствуют значениям x, y и f. Я хочу построить контурный график f(x,y) в плоскости x,y из этих данных с помощью Octave/MATLAB.

Допустим, матрица M имеет вид

x1 y1 f1
x2 y2 f2
x3 y3 f3
.  .  .
.  .  .

Я обнаружил, что функция contourf требует, чтобы f была матрицей (тогда как у меня есть вектор с соответствующими точками).

Как сгенерировать этот график?

Ответы (1)

Переменные x, y и z, которые вы передаете в contourf, являются матрицами одного размера. Для каждой точки необходимо значение x, y и z. Вы можете использовать meshgrid для создания матриц, содержащих все комбинации значений x и y.

Этот пример взят из документации для contourf. Я добавил несколько комментариев, чтобы объяснить, что происходит

% Create a vector of x values
x = linspace(-2*pi,2*pi);
% Create a vector of y values 
y = linspace(0,4*pi);
% Make matrices with all combinations of x and y values for plotting
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
contourf(X,Y,Z)

Вот результат работы приведенного выше кода введите описание изображения здесь

2022 WebDevInsider