Matlab学习12——diff

diff
差分和近似导数全页折叠
语法
Y = diff(X)
Y = diff(X,n)
Y = diff(X,n,dim)
说明
示例
Y = diff(X) 计算沿大小不等于 1 的第一个数组维度的 X 相邻元素之间的差分:

如果 X 是长度为 m 的向量,则 Y = diff(X) 返回长度为 m-1 的向量。Y 的元素是 X 相邻元素之间的差分。

Y = [X(2)-X(1) X(3)-X(2) … X(m)-X(m-1)]
如果 X 是不为空的非向量 p×m 矩阵,则 Y = diff(X) 返回大小为 (p-1)×m 的矩阵,其元素是 X 的行之间的差分。

Y = [X(2,:)-X(1,:); X(3,:)-X(2,:); … X(p,:)-X(p-1,:)]
如果 X 是 0×0 的空矩阵,则 Y = diff(X) 返回 0×0 的空矩阵。

示例
Y = diff(X,n) 通过递归应用 diff(X) 运算符 n 次来计算第 n 个差分。在实际操作中,这表示 diff(X,2) 与 diff(diff(X)) 相同。

示例
Y = diff(X,n,dim) 是沿 dim 指定的维计算的第 n 个差分。dim 输入是一个正整数标量。

示例
全部折叠
向量元素之间的差分
创建一个向量,然后计算元素之间的差分。

X = [1 1 2 3 5 8 13 21];
Y = diff(X)
Y = 1×7

 0     1     1     2     3     5     8

请注意,Y 的元素比 X 少一个。

矩阵行之间的差分
创建一个 3×3 矩阵,然后计算各行之间的一阶差分。

X = [1 1 1; 5 5 5; 25 25 25];
Y = diff(X)
Y = 2×3

 4     4     4
20    20    20

Y 是 2×3 矩阵。

多阶差分
创建一个向量,然后计算元素之间的二阶差分。

X = [0 5 15 30 50 75 105];
Y = diff(X,2)
Y = 1×5

 5     5     5     5     5

矩阵列之间的差分
创建一个 3×3 矩阵,然后计算各列之间的一阶差分。

X = [1 3 5;7 11 13;17 19 23];
Y = diff(X,1,2)
Y = 3×2

 2     2
 4     2
 2     4

Y 是一个 3×2 矩阵。

使用差分求导数近似值
使用 diff 函数和语法 Y = diff(f)/h 求偏导数近似值,其中 f 是函数值在某些域 X 上计算的向量,h 是一个相应的步长。

例如,sin(x) 相对于 x 的第一个导数为 cos(x),相对于 x 的第二个导数值为 -sin(x)。可以使用 diff 求这些导数的近似值。

h = 0.001; % step size
X = -pi:h:pi; % domain
f = sin(X); % range
Y = diff(f)/h; % first derivative
Z = diff(Y)/h; % second derivative
plot(X(:,1:length(Y)),Y,‘r’,X,f,‘b’, X(:,1:length(Z)),Z,‘k’)
Figure contains an axes. The axes contains 3 objects of type line.

在此绘图中,蓝色线条对应原始函数 sin。红色线条对应计算出的第一个导数 cos,黑色线条对应计算出的第二个导数 -sin。

日期时间值之间的差
创建一个等间距日期时间值序列,并计算这些值之间的时间差。

t1 = datetime(‘now’);
t2 = t1 + minutes(5);
t = t1:minutes(1.5):t2
t = 1x4 datetime
Columns 1 through 3

30-Apr-2021 22:15:29 30-Apr-2021 22:16:59 30-Apr-2021 22:18:29

Column 4

30-Apr-2021 22:19:59

dt = diff(t)
dt = 1x3 duration
00:01:30 00:01:30 00:01:30

diff 返回 duration 数组。

输入参数
全部折叠
X - 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。X 可以是数值数组、逻辑数组、日期时间数组或持续时间数组。

复数支持: 是

n - 差分阶
正整数标量 | []
差分阶,指定为正整数标量或 []。n 的默认值为 1。

可以将 n 指定为足够大,以让 dim 减少为单一 (size(X,dim) = 1) 维度。发生这种情况时,diff 继续沿大小不等于 1 的下一个数组维度计算。此过程会一直继续,直至返回一个 0×0 的空矩阵。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

dim - 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

以一个二维 p x m 输入数组 A 为例:

diff(A,1,1) 会对 A 的列中的连续元素进行处理,然后返回 (p-1)xm 的差分矩阵。

diff(A,1,2) 会对 A 的行中的连续元素进行处理,然后返回 px(m-1) 的差分矩阵。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参数
全部折叠
Y - 差分数组
标量 | 向量 | 矩阵 | 多维数组
差分数组,以标量、向量、矩阵或多维数组形式返回。如果 X 是一个非空数组,则由 diff 所处理的 X 的维度在输出中的大小将减小 n。

扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
分布式数组
使用 Parallel Computing Toolbox™ 在群集的组合内存中对大型数组进行分区。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值