График плотности с использованием двух столбцов координат и столбца веса

У меня есть матрица с 3 столбцами. Первые два столбца — это координаты, а третий — вес или интенсивность.

newmat = [ 27.37  -45.69   14.47
           27.37  -45.68   18.58
           27.37  -45.67   29.05
           27.37  -45.66   51.7
            ...     ...     ... ]

Я уже создал точечную диаграмму:

диаграмма рассеяния

Однако я хотел бы иметь что-то вроде графика плотности (как второй график здесь). Я пытался использовать функцию hist3, как в здесь, но я не понял как учесть третий столбец - вес.


person Aviad    schedule 29.08.2017    source источник
comment
Из ссылки на картинку: out = accumarray([idxx,idxy], 1); Вы заменяете это на out = accumarray([idxx,idxy], weights);   -  person Gelliant    schedule 29.08.2017
comment
Спасибо, а как именно это мне поможет?   -  person Aviad    schedule 29.08.2017


Ответы (1)


Вы можете создать матрицу из данных в newmat (используя функции sortrows, unique и accumarray) и изобразите его как изображение:

newmat = sortrows(newmat, [1 2]);  % Sort the first two columns in ascending order
[x, ~, newmat(:, 1)] = unique(newmat(:, 1));     % Make numeric indices for column 1
[y, ~, newmat(:, 2)] = unique(newmat(:, 2));     % Make numeric indices for column 2
M = accumarray(newmat(:, 1:2), newmat(:, 3)).';  % Build the matrix
imagesc(x, y, M);

Вот некоторые примеры данных, похожие на ваш формат:

[X, Y] = meshgrid(0:0.1:2, 3:0.1:5);
Z = peaks(21);
newmat = [X(:) Y(:) Z(:)];

И вот график, который приведенный выше код создает из этих данных:

введите здесь описание изображения

person gnovice    schedule 29.08.2017
comment
Спасибо большое. Это было очень полезно! - person Aviad; 30.08.2017