Есть ли способ автоматически получить градиент вдоль разных размеров массива? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь найти способ автоматизировать вычисление градиента функции по ее различным измерениям в Matlab.

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

В принципе, если F - вектор, я бы хотел: G = gradient(F) длябыть массивом ячеек с одной записью: вектор со всеми значениями градиента.Однако, если F является 2D-массивом, я бы хотел, чтобы G был массивом ячеек с записями GX и GY, где GX - градиент вдоль направления X и GY - градиент вдольнаправление Y.

1 Ответ

0 голосов
/ 25 марта 2019

Примерно так бы и получилось:

nd = sum(size(F)>1);
G = cell(nd,1);
[G{:}] = gradient(F);

nd - это число измерений (простой вызов ndims не подходит, так как вектор имеет 2 измерения в MATLAB, все имеет как минимум 2 измерения). Конструкция [G{:}] назначает один выходной аргумент gradient каждому из элементов массива ячеек.

...