MATLAB中的diff函式

2021-07-05 12:21:42 字數 1102 閱讀 6515

顯然這個函式是單詞differential(微分)的簡寫,用於計算微分。實際上準確來說計算的是差商。

如果輸入乙個長度為n的一維向量,則該函式將會返回長度為n-1的向量,向量的值是原向量相鄰元素的差,於是可以計算一階導數的有限差分近似。

例如:>> x=1:10

x =1     2     3     4     5     6     7     8     9    10

>> diff(x)

ans =

1     1     1     1     1     1     1     1     1

如果是m*n的矩陣,則按行實施,結果就是(m-1)*n的矩陣,就是用下一行減去上一行。

例如:>> a=magic(4)

a =16     2     3    13

5    11    10     8

9     7     6    12

4    14    15     1

>> diff(a)

ans =

-11     9     7    -5

4    -4    -4     4

-5     7     9   -11

利用diff計算微分,例如:

f=@(x) 1+2*x-3*x.^2+4*x.^3-5*x.^4+6*x.^5;

x=0:0.1:1;

y=f(x);

d=diff(y)/0.1;

n=length(x);

plot(x(1:n-1),d,'o');

hold on;

%繪製真實導數圖形

x=0:0.05:1;

plot(x, 2-6*x+12*x.^2-20*x.^3+30*x.^4,'r');

得到圖形如下:

有一些偏差。這個時候可以使用縮小間距提高精度。

另外diff函式還有一些其他的妙用,例如:

檢測向量是否等距:

等距的測試是if any(diff(diff(x)~=0),只有等距的時候結果才為零。

檢測向量是否按公升序或者降序排列也可以,如if any(diff(x)<=0)

本質上是採用了導數的性質。

pandas中shift和diff函式關係簡單總結

signature pandas.dataframe.shift self,periods 1,freq none,axis 0 shift方法 signature pandas.dataframe.diff self,periods 1,axis 0 diff方法 先簡單總結 shift可以移動d...

MATLAB中的length函式

在matlab中 size 獲取陣列的行數和列數 length 陣列長度 即行數或列數中的較大值 numel 元素總數。s size a 當只有乙個輸出引數時,返回乙個行向量,該行向量的第乙個元素時陣列的行數,第二個元素是陣列的列數。r,c size a 當有兩個輸出引數時,size函式將陣列的行數...

Matlab中的rectangle函式

matlab中的rectangle函式 樓外樓 rectangle函式功能 建立二維矩形物件。rectangle position x,y,w,h 從點 x,y 開始繪製乙個寬w高h的矩形,對座標軸資料單元指定值。注意,按指定的比例顯示矩形,需要設定座標軸資料寬高比來使得x和y軸有等長的單位。你可以...