градиент

Числовой градиент

Синтаксис

FX = gradient(F)
[FX,FY] = gradient(F)
[FX,FY,FZ,...,FN] = gradient(F)
[___] = gradient(F,h)
[___] = gradient(F,hx,hy,...,hN)

Описание

пример

FX = gradient(F) возвращает одномерный числовой градиент векторного F. Вывод FX соответствует ∂F / ∂ x, которые являются различиями в x (горизонталь) направление. Интервал между точками принят, чтобы быть 1.

пример

[FX,FY] = gradient(F) возвращает компоненты x и y двумерного числового градиента матричного F. Дополнительный вывод FY соответствует ∂F / ∂ y, которые являются различиями в y (вертикальное) направление. Интервал между точками в каждом направлении принят, чтобы быть 1.

[FX,FY,FZ,...,FN] = gradient(F) возвращает компоненты N числового градиента F, где F является массивом с размерностями N.

пример

[___] = gradient(F,h) использует h в качестве универсального интервала между точками в каждом направлении. Можно задать любой из выходных аргументов в предыдущих синтаксисах.

пример

[___] = gradient(F,hx,hy,...,hN) задает параметры разрядки N для интервала в каждой размерности F.

Примеры

свернуть все

Вычислите градиент монотонно увеличивающегося вектора.

x = 1:10
x = 1×10

     1     2     3     4     5     6     7     8     9    10

fx = gradient(x)
fx = 1×10

     1     1     1     1     1     1     1     1     1     1

Вычислите 2D градиент на сетку.

x = -2:0.2:2;
y = x';
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z);

Постройте график линий контура и векторов в той же фигуре.

figure
contour(x,y,z)
hold on
quiver(x,y,px,py)
hold off

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

Уравнение для линейной аппроксимации значения функции

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

Вычислите некоторые значения синусоидальной функции между-1 и 0.5. Затем вычислите градиент.

y = sin(-1:0.25:0.5);
yp = gradient(y,0.25);

Используйте значение функции и производную в x = 0.5, чтобы предсказать значение sin(0.5005).

y_guess = y(end) + yp(end)*(0.5005 - 0.5)
y_guess = 0.4799

Вычислите фактическое значение для сравнения.

y_actual = sin(0.5005)
y_actual = 0.4799

Найдите значение градиента многомерной функции в заданной точке.

Рассмотрите многомерную функцию.

x = -3:0.2:3;
y = x';
f = x.^2 .* y.^3;
surf(x,y,f)
xlabel('x')
ylabel('y')
zlabel('z')

Вычислите градиент на сетку.

[fx,fy] = gradient(f,0.2);

Извлеките значение градиента в точке (1,-2). Для этого сначала получите индексы точки, с которой вы хотите работать. Затем используйте индексы, чтобы извлечь соответствующие значения градиента от fx и fy.

x0 = 1;
y0 = -2;
t = (x == x0) & (y == y0);
indt = find(t);
f_grad = [fx(indt) fy(indt)]
f_grad = 1×2

  -16.0000   12.0400

Точное значение градиента в точке (1,-2)

Входные параметры

свернуть все

Входной массив, заданный как векторный, матричный или многомерный массив.

Типы данных: single | double
Поддержка комплексного числа: Да

Универсальный интервал между точками во всех направлениях, заданных как скаляр.

Пример: [FX, FY] = градиент (F, 2)

Типы данных: single | double
Поддержка комплексного числа: Да

Разрядка между точками в каждом направлении, заданном как отдельные входные параметры скаляров или векторов. Количество входных параметров должно совпадать с количеством измерений массива F. Каждый входной параметр может быть скаляром или вектором:

  • Скаляр задает постоянный интервал в той размерности.

  • Вектор задает координаты значений по соответствующему измерению F. В этом случае длина вектора должна совпадать с размером соответствующей размерности.

Пример: [FX, FY] = градиент (F, 0.1,2)

Пример: [FX, FY] = градиент (F, [0.1 0.3 0.5], 2)

Пример: [FX, FY] = градиент (F, [0.1 0.3 0.5], [2 3 5])

Типы данных: single | double
Поддержка комплексного числа: Да

Выходные аргументы

свернуть все

Числовые градиенты, возвращенные как массивы, одного размера как F. Первый вывод FX всегда является градиентом по 2-му измерению F, идущего через столбцы. Второй вывод FY всегда является градиентом по 1-му измерению F, идущего через строки. Для третьего вывода FZ и выходных параметров, которые следуют, N th вывод является градиентом вдоль N th размерность F.

Больше о

свернуть все

Числовой градиент

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

Для функции двух переменных, F (x, y), градиент

∇F = F∂xi^ + F∂yj^ .

Градиент может считаться набором векторов, указывающих в направлении увеличения значений F. В MATLAB® можно вычислить числовые градиенты для функций с любым количеством переменных. Для функции переменных N, F (x, y, z...), градиент

∇F = F∂xi^ + F∂yj^ + F∂zk^ +... + ∂F∂Nn^ .

Алгоритмы

gradient вычисляет центральное различие для внутренних точек данных. Например, рассмотрите матрицу с расположенными с интервалами модулем данными, A, который имеет горизонтальный градиент G = gradient(A). Внутренние значения градиента, G(:,j),

G(:,j) = 0.5*(A(:,j+1) - A(:,j-1));

Нижний j отличается между 2 и N-1 с N = size(A,2).

gradient вычисляет значения вдоль краев матрицы с односторонними различиями:

G(:,1) = A(:,2) - A(:,1);
G(:,N) = A(:,N) - A(:,N-1);

Если вы задаете интервал точки, то gradient масштабирует различия соответственно. Если вы задаете два или больше выходных параметров, то функция также вычисляет различия по другим измерениям подобным образом. В отличие от функции diff, gradient возвращает массив с тем же числом элементов как входной параметр.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представлено до R2006a

Была ли эта тема полезной?