2016-12-26 5 views
2

Я создал трехмерный график, который похож на гауссовское распределение со случайными переменными Y, X1 и X2 (1000x1) векторов. Y находится на вертикальной оси, X1 и X2 - горизонтальные.Гауссовский график контура трех переменных - MATLAB

В частности, это код, который я использовал для сюжета:

plot3(x(:,1),x(:,2),y,'.') 

Граф, который был создан имеет такую ​​форму:

3D - Gaussian

То, что я также хочу, чтобы произвести это что-то например:

Contour - Gaussian

Но, когда я использую этот код:

contour(x(:,1),x(:,2),y); 

Я получаю сообщение, что:

Ошибка при помощи контура (строка 48) Z должен быть по крайней мере, матрица 2х2.

Я действительно не понимаю, как исправить эту проблему, я полагаю, что Z - это Y, но я не понимаю, почему это должно быть как минимум 2x2. Во всяком случае, любая помощь будет высоко оценена.

ответ

0

Вы не можете создать контур по разбросанным данным, вам нужна сетка. Можно интерполировать данные по сетке NxN образцов в области XY, используя griddata (здесь домен [-2,2]x[-2,2] в качестве примера):

N = 200; 
xi = linspace(-2, 2, N); 
yi = linspace(-2, 2, N); 
[XI, YI] = meshgrid(xi, yi); 
ZI = griddata(x(:,1), x(:,2), y, XI, YI, 'v4'); 
contour(XI,YI,ZI); 

Более подробную информацию о том, как интерполировать разбросанные данные here.

Смежные вопросы