Main Content

diff

차분과 근사 도함수

설명

예제

Y = diff(X)는 크기가 1이 아닌 첫 번째 배열 차원을 따라 X의 인접 요소 사이의 차분을 계산합니다.

  • 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)×m인 행렬을 반환합니다. 이 행렬의 요소는 X의 행 간의 차분입니다.

    Y = [X(2,:)-X(1,:); X(3,:)-X(2,:); ... X(p,:)-X(p-1,:)]
  • X가 0×0 빈 행렬인 경우 Y = diff(X)는 0×0 빈 행렬을 반환합니다.

  • X가 p×m 테이블 또는 타임테이블이면 Y = diff(X)는 크기가 (p-1)×m인 테이블 또는 타임테이블을 반환합니다. 이 테이블 또는 타임테이블의 요소는 X의 행 간의 차분입니다. X가 1×m 테이블 또는 타임테이블이면 Y의 크기는 0×m입니다. (R2023a 이후)

예제

Y = diff(X,n)diff(X) 연산자를 재귀적으로 n회 적용하여 n번째 차분을 계산합니다. 실제로 이는 diff(X,2)diff(diff(X))와 동일하다는 것을 의미합니다.

예제

Y = diff(X,n,dim)dim으로 지정된 차원을 따라 계산된 n번째 차분입니다. 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 행렬입니다.

벡터를 생성한 다음, 요소 간의 2차 차분을 계산합니다.

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

     5     5     5     5     5

3×3 행렬을 생성한 다음, 열 간의 1차 차분을 계산합니다.

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는 적절한 스텝 크기입니다.

예를 들어, x에 대한 sin(x)의 1계 도함수는 cos(x)이고 x에 대한 2계 도함수는 -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 object. The axes object contains 3 objects of type line.

이 플롯에서 파란색 선은 원본 함수 sin에 대응합니다. 빨간색 선은 계산된 1계 도함수 cos에 대응하고 검은색 선은 계산된 2계 도함수 -sin에 대응합니다.

균일한 간격의 datetime형 값 시퀀스를 만들고 값 사이의 시간 차분을 구합니다.

t1 = datetime('now');
t2 = t1 + minutes(5);
t = t1:minutes(1.5):t2
t = 1x4 datetime
   25-Jan-2024 22:19:42   25-Jan-2024 22:21:12   25-Jan-2024 22:22:42   25-Jan-2024 22:24:12

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

diffduration형 배열을 반환합니다.

입력 인수

모두 축소

입력 배열로, 벡터, 행렬, 다차원 배열, 테이블 또는 타임테이블로 지정됩니다. X는 그러한 데이터형의 변수를 갖는 숫자형 배열, 논리형 배열, datetime형 배열 또는 duration형 배열, 테이블 또는 타임테이블일 수 있습니다.

복소수 지원 여부:

차분의 차수로, 양의 정수 스칼라 또는 []로 지정됩니다. n의 디폴트 값은 1입니다.

n이 연산이 수행되는 차원보다 큰 경우 diff의 동작은 사용되는 구문에 따라 달라집니다.

  • diff(X,n)(여기서 n은 첫 번째 비한원소 차원보다 큼)을 사용할 경우 diff는 해당 차원의 크기를 1로 줄인 다음, 그다음 비한원소 차원을 따라 계속해서 차분을 취합니다.

  • diff(X,n,dim)(여기서 n >= size(X,dim)임)을 사용할 경우 diff는 빈 배열을 반환합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

연산을 수행할 차원으로, 양의 정수 스칼라로 지정됩니다. 차원을 지정하지 않을 경우 디폴트 값은 크기가 1보다 큰 첫 번째 배열 차원이 됩니다.

2차원 p×m 입력 배열 A가 있다고 가정하겠습니다.

  • diff(A,1,1)A의 열에 있는 연속된 요소에 대해 동작을 수행하고 (p-1)×m 차분 행렬을 반환합니다.

  • diff(A,1,2)A의 행에 있는 연속된 요소에 대해 동작을 수행하고 p×(m-1) 차분 행렬을 반환합니다.

diff(A,1,1) column-wise computation and diff(A,1,2) row-wise computation

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

출력 인수

모두 축소

차분 배열로, 스칼라, 벡터, 행렬, 다차원 배열, 테이블 또는 타임테이블로 반환됩니다. X가 비어 있지 않은 배열인 경우 diff가 수행된 X의 차원 크기는 출력값에서 n만큼 줄어듭니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| | |