顯然這個函式是單詞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軸有等長的單位。你可以...