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-by-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) вычисляет энное различие путем применения diff(X) оператор рекурсивно n \times. На практике это означает diff(X,2) совпадает с diff(diff(X)).

пример

Y = diff(X,n,dim) энное различие, вычисленное по измерению, заданному dim. 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')

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

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

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

   20-Dec-2019 17:29:29   20-Dec-2019 17:30:59   20-Dec-2019 17:32:29

Column 4

   20-Dec-2019 17:33:59

dt = diff(t)
dt = 1x3 duration array
   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-by-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