Создание матрицы из 3d сетки - PullRequest
0 голосов
/ 04 мая 2019

Изначально у меня была матрица (512x512), я создал 3d-сетку с помощью функции mesh (). Фигура показала мне пики. Я хотел извлечь матрицу для каждого пика, а затем рассчитать объем. Я столкнулся с двумя случаями для решения:

https://de.mathworks.com/matlabcentral/answers/277512-how-to-find-peaks-in-3d-mesh

Найти объем 3d-пиков в matlab

В обоих случаях данные генерируются в форме X, Y, Z. Однако это не мой случай. Как я могу извлечь матрицы для каждого пика?

пики из матрицы 512x512

1 Ответ

0 голосов
/ 04 мая 2019

В настоящее время у вас есть двумерная матрица значений Z. Когда вы строите только матрицу Z через mesh(), MATLAB использует позиции строк и столбцов значений в матрице в качестве значений X и Y. Чтобы получить явные значения X и Y, вы можете использовать meshgrid(). Например, если предположить, что значения X и Y находятся в диапазоне от 1 до 600, как показано на связанном графике:

[X, Y] = сетка (1: 600);

Имейте в виду, что в зависимости от того, как вы хотите использовать значения Z, Y и Z, вам, возможно, придется преобразовывать формат дальше. В вашей первой ссылке предполагается, что данные отформатированы как 3-мерные массивы, а во второй ссылке предполагается, что данные отформатированы как 3-мерные матрицы. Если вам нужны значения в одномерном формате, вы можете преобразовать двумерные матрицы в векторы столбцов с помощью :, то есть:

X_flat = X(:);
Y_flat = Y(:);
Z_flat = Z(:);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...