MATLAB 中的 diff() 函式

Ammar Ali 2024年2月15日
MATLAB 中的 diff() 函式

本教程將討論使用 Matlab 中的 diff() 函式查詢差異和近似導數。

在 MATLAB 中使用 diff() 函式查詢差異和近似導數

diff() 函式用於在 Matlab 中查詢差異和近似導數。語法:diff(x) 用於查詢向量或矩陣的相鄰元素之間的差異。如果輸入是向量,則差值將是輸入向量的相鄰值之間的差值。輸出向量的大小將比輸入向量的大小小 1。例如,讓我們找出向量值之間的差異。請參閱下面的程式碼。

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) 函式將查詢輸入向量或矩陣值之間的二階差分。語句 diff(x,2) 與語句 diff(diff(x)) 相同。例如,讓我們找出上述向量的值之間的二階差。請參閱下面的程式碼。

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