diff

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

Синтаксис

Y = diff(X)
Y = diff(X,n)
Y = diff(X,n,dim)

Описание

пример

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. На практике это означает, что 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

   21-Aug-2018 18:35:39   21-Aug-2018 18:37:09   21-Aug-2018 18:38:39

Column 4

   21-Aug-2018 18:40:09

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) матрица различия.

Типы данных: удвойтесь | единственный | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

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

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

Смотрите также

| | |

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

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