MATLAB의 diff() 함수

Ammar Ali 2022년1월20일
MATLAB의 diff() 함수

이 튜토리얼에서는 Matlab의 diff() 함수를 사용하여 차이점과 근사 도함수를 찾는 방법에 대해 설명합니다.

MATLAB의 diff() 함수를 사용하여 차이 및 근사 도함수 찾기

diff() 함수는 Matlab에서 차이점과 근사 도함수를 찾는 데 사용됩니다. 구문: diff(x)는 벡터 또는 행렬의 인접 요소 간의 차이를 찾는 데 사용됩니다. 입력이 벡터인 경우 차이는 입력 벡터의 인접한 값 간의 차이가 됩니다. 출력 벡터의 크기는 입력 벡터의 크기보다 하나 작습니다. 예를 들어 벡터 값 간의 차이를 찾아보겠습니다. 아래 코드를 참조하십시오.

clc
x = [1 3 6 9];
y = diff(x)

출력:

y =

     2     3     3

출력에서 입력 벡터 1과 3의 처음 두 요소 간의 차이는 2이며 변수 y에 저장됩니다. 입력이 행렬인 경우 차이는 입력 행렬의 행 간의 차이가 되고 행의 크기는 행의 길이와 차이의 차수 간의 차이와 같습니다. 예를 들어 벡터 값 간의 차이를 찾아보겠습니다. 아래 코드를 참조하십시오.

clc
x = [1 3 6 9; 1 2 3 4]
y = diff(x)

출력:

x =

     1     3     6     9
     1     2     3     4


y =

     0    -1    -3    -5

출력에서 입력 행렬의 처음 두 행의 처음 두 요소 간의 차이는 0이며 변수 y에 저장됩니다. 입력 행렬에서 한 행을 늘리면 출력 행렬에서도 한 행이 증가합니다. diff() 함수의 두 번째 인수를 사용하여 벡터 또는 행렬 요소 간의 n번째 시간 차이를 찾을 수도 있습니다. 예를 들어 diff(x,2) 함수는 입력 벡터 또는 행렬 값 간의 2차 차이를 찾습니다. diff(x,2) 문은 diff(diff(x)) 문과 동일합니다. 예를 들어, 위 벡터의 값 사이의 2차 차이를 구해 봅시다. 아래 코드를 참조하십시오.

clc
x = [1 3 6 9]
y = diff(x,2)

출력:

x =

     1     3     6     9


y =

     1     0

출력에서는 크기가 입력 벡터의 길이와 차이 차수의 차이와 같기 때문에 출력 벡터의 크기도 감소했습니다. 고차의 경우 diff() 함수는 자신을 재귀적으로 호출하여 차이를 찾습니다. diff() 함수의 세 번째 인수를 사용하여 행 대신 행렬의 열 간의 차이를 찾을 수도 있습니다. 예를 들어 위 행렬의 열 간의 차이를 찾아보자. 아래 코드를 참조하십시오.

clc
x = [1 3 6 9; 1 2 3 4]
y = diff(x,1,2)

출력:

x =

     1     3     6     9
     1     2     3     4


y =

     2     3     3
     1     1     1

열 간의 차이가 있는 경우 열의 크기는 열의 길이와 차이의 순서의 차이와 같으며 행 크기는 동일하게 유지됩니다. diff(f)/h 함수를 사용하여 함수의 편미분을 찾을 수도 있습니다. 여기서 f는 주어진 함수이고 h는 단계 크기입니다. 예를 들어 sin(x)의 편도함수를 찾아 plot() 함수를 사용하여 그래프에 플로팅해 보겠습니다. 아래 코드를 참조하십시오.

h = 0.001;       
x = -2*pi:h:2*pi;    
f = sin(x);      
y = diff(f)/h;  
plot(x(:,1:length(y)),y,x,f)
legend('sin(x)','cos(x)')

출력:

사인파의 미분

출력에서 파란색 선은 사인파이고 빨간색 선은 사인파의 미분인 코사인파입니다. legend() 함수는 그래프에 범례를 그려 어떤 플롯이 어떤 데이터에 속하는지 나타내는 데 사용됩니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - MATLAB Vector