首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中矩阵的离散差分算子

R中矩阵的离散差分算子
EN

Stack Overflow用户
提问于 2020-03-26 07:28:15
回答 2查看 246关注 0票数 0

我有一个矩阵

代码语言:javascript
复制
A <- matrix(1:16, nrow = 4, ncol = 4, Byrow = FALSE)

我想要矩阵A的逐行差分,即A的第一行和第二行之间的元素差,A的第二行和第三行之间的元素差,等等。由于A∈R4×4,因此得到的矩阵应该包含维度为3×4的行差分。

我不想使用for循环遍历A的行并求连续行之间的差值,而是使用离散差分运算符来加速操作。我使用sapply()构造这个矩阵差分运算符B,然后使用B×A计算逐行差分。

比方说矩阵B∈R3×4

代码语言:javascript
复制
B <- matrix(c( -1,  1, 0,  0, 
                0, -1, 1,  0,
                0, 0, -1, 1), nrow = 3, ncol = 4, byrow = TRUE)

预期输出为全为1的矩阵C∈R3×4。

代码语言:javascript
复制
Result_C <- matrix(c(  1, 1, 1,  1, 
                       1, 1, 1,  1,
                       1, 1, 1, 1), nrow = 3, ncol = 4, byrow = TRUE)

我应该如何继续?R中矩阵的差分算子是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-03-26 07:30:01

我们可以使用diff来计算行之间的差异

代码语言:javascript
复制
diff(A)
#     [,1] [,2] [,3] [,4]
#[1,]    1    1    1    1
#[2,]    1    1    1    1
#[3,]    1    1    1    1
票数 0
EN

Stack Overflow用户

发布于 2020-03-26 07:48:45

您可以寻址到矩阵的完整列或行

代码语言:javascript
复制
A <- matrix(1:16, nrow = 4, ncol = 4)

A[2:(nrow(A)),]-A[1:(nrow(A)-1),]

是的,diff(A)在这里也应该做同样的事情

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60858891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档