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()
函式用於在圖形上繪製圖例以指示哪個圖屬於哪個資料。