Дискретизация / объединение N-мерных данных в Matlab для визуализации - PullRequest
0 голосов
/ 11 мая 2018

Этот действительно вызывает у меня головную боль ...

У меня есть набор данных, состоящий из X групп частиц, каждая из которых обладает некоторыми специфическими для группы свойствами. Каждая из этих групп содержит определенное количество частиц с заданным распределением скорости, и каждая частица летит в определенном направлении. Я отслеживаю положение частиц как функцию времени. Теперь я хочу сделать некоторые значимые визуализации из этих данных.

Для простоты предположим, что скорости были объединены в N бинов, а количество частиц в бине скорости всегда одинаково. Кроме того, давайте предположим, что я смотрю только на абсолютное расстояние w.r.t. Происхождение (то есть позиция становится единичным значением).

У меня есть данные о положении для этого упрощенного случая, сохраненные для T временных шагов в трехмерном массиве ( T x N x X ). Я уже дискретизировал свои данные о положении так, что все значения теперь являются точками на равноотстоящей сетке. Теперь я хочу визуализировать, например, общее количество частиц в каждой позиции в данный момент времени, например, с помощью hist3 или surf.

По сути, все, что я хочу сделать, - это подсчитать количество вхождений каждой отдельной позиции для каждого временного шага. Хотя я мог бы просто пройтись по временным шагам, чтобы рассчитать счет, я надеюсь, что есть более элегантное решение для этого!

1 Ответ

0 голосов
/ 11 мая 2018

Для сбора данных вы можете использовать функцию histcounts на каждом временном шаге, указав свои дискретные ячейки в качестве «ребер».

[N,edges] = histcounts(X,edges)

При построении данных я не думаю, что выВы сможете построить T x N x X как трехмерный график, потому что у вас есть четыре переменные (время, скорость, группа, позиция).Вы можете разделить визуализацию на графики для каждой группы, для чего вы можете сделать поверхностный график для счетчика положений для каждой комбинации время / скорость.

...