diff

Различия и аппроксимация производных

Описание

пример

Y = diff(X) вычисляет различия между смежными элементами X вдоль первого измерения массива, размер которого не равен 1:

  • Если X является вектором длины m, затем Y = diff(X) возвращает вектор длины m-1. Элементы Y являются различиями между смежными элементами X.

    Y = [X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)]

  • Если X - непустая, невектор матрица p-на-m, затем Y = diff(X) возвращает матрицу размера (p-1) -by-m, элементами которой являются различия между строками X.

    Y = [X(2,:)-X(1,:); X(3,:)-X(2,:); ... X(p,:)-X(p-1,:)]
  • Если X - пустая матрица 0 на 0, затем Y = diff(X) возвращает пустую матрицу 0 на 0.

пример

Y = diff(X,n) вычисляет n-ю различие путем применения diff(X) Оператор рекурсивно n времени. На практике это означает diff(X,2) то же, что и diff(diff(X)).

пример

Y = diff(X,n,dim) nth различия вычисляется вдоль размерности, заданной как dim. The dim вход является положительным целочисленным скаляром.

Примеры

свернуть все

Создайте вектор, затем вычислите различия между элементами.

X = [1 1 2 3 5 8 13 21];
Y = diff(X)
Y = 1×7

     0     1     1     2     3     5     8

Обратите внимание, что Y имеет на один элемент меньше, чем X.

Создайте матрицу 3 на 3, а затем вычислите первое различие между строками.

X = [1 1 1; 5 5 5; 25 25 25];
Y = diff(X)
Y = 2×3

     4     4     4
    20    20    20

Y является матрицей 2 на 3.

Создайте вектор и вычислите различие второго порядка между элементами.

X = [0 5 15 30 50 75 105];
Y = diff(X,2)
Y = 1×5

     5     5     5     5     5

Создайте матрицу 3 на 3, а затем вычислите различие первого порядка между столбцами.

X = [1 3 5;7 11 13;17 19 23];
Y = diff(X,1,2)
Y = 3×2

     2     2
     4     2
     2     4

Y является матрицей 3 на 2.

Используйте diff функция для аппроксимации частных производных с помощью синтаксиса Y = diff(f)/h, где f - вектор значений функций, вычисленных в некоторой области, X, и h - соответствующий размер шага.

Для примера - первая производная sin(x) относительно x является cos(x), и вторую производную в отношении x является -sin(x). Можно использовать diff для аппроксимации этих производных.

h = 0.001;       % step size
X = -pi:h:pi;    % domain
f = sin(X);      % range
Y = diff(f)/h;   % first derivative
Z = diff(Y)/h;   % second derivative
plot(X(:,1:length(Y)),Y,'r',X,f,'b', X(:,1:length(Z)),Z,'k')

Figure contains an axes. The axes contains 3 objects of type line.

На этом графике синяя линия соответствует исходной функции, sin. Красная линия соответствует вычисленной первой производной, cos, и черная линия соответствует вычисленной второй производной, -sin.

Создайте последовательность значений datetime с равными интервалами и найдите временные различия между ними.

t1 = datetime('now');
t2 = t1 + minutes(5);
t = t1:minutes(1.5):t2
t = 1x4 datetime
Columns 1 through 3

   23-Mar-2021 17:02:43   23-Mar-2021 17:04:13   23-Mar-2021 17:05:43

Column 4

   23-Mar-2021 17:07:13

dt = diff(t)
dt = 1x3 duration
   00:01:30   00:01:30   00:01:30

diff возвращает duration массив.

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

свернуть все

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

Поддержка комплексного числа: Да

Порядок различий, заданный в виде положительного целочисленного скаляра или []. Значение по умолчанию n равен 1.

Возможно задать n достаточно большой, чтобы dim уменьшается до одной (size(X,dim) = 1) размерность. Когда это происходит, diff продолжает вычислять следующее измерение массива, не равный 1. Этот процесс продолжается до тех пор, пока не вернется пустая матрица 0 на 0.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Рассмотрим двумерный входной массив p-на-m, A:

  • diff(A,1,1) работает над последовательными элементами в столбцах A и возвращает (p-1) -by-m разностную матрицу.

  • diff(A,1,2) работает над последовательными элементами в строках A и возвращает p-by- (m-1) разностную матрицу.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Массив различий, возвращенный в виде скаляра, вектора, матрицы или многомерного массива. Если X является непустым массивом, тогда размерность X действовал diff уменьшается в размере на n в выходе.

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

.

См. также

| | |

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