两个矩阵之间的元素逐级求和

康纳

我真的不知道该怎么称呼!

我正在尝试在R中实现以下公式。您几乎可以忽略一切,除了该行上方的求和部分

在此处输入图片说明

如果我有两个矩阵

    > task2
     [,1] [,2] [,3]
[1,]    1    3    3
[2,]    2    5    1

> actor
     [,1] [,2] [,3]
[1,]    1    5    1
[2,]    2    4    6
[3,]    4    3    4

结果矩阵应为(对于该行上方的求和部分)

> result
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    4    1    1

结果[1,1] = sum(pmax(0,1-1),pmax(0,3-2),pmax(0,3-4)= 1

我想我知道如何使用嵌套的for循环来做到这一点,尽管我知道那不是您在R中的实现方式。这是不正确的,但应该遵循这样的思路

for (i in 1:nrow(task)){
  for (j in 1:ncol(actor)){
    for (k in 1:ncol(task)){
      result[i,j] <- sum(pmax(0,(task[i,k]-actor[k,j))
    }
  }
}

有人对如何解决此问题有任何建议吗?

彼得·L

根据示例中显示的逻辑,这应该可以工作。请对照您引用的公式检查所需的输出。准确的结果取决于要与nxp矩阵进行比较的第一个mxn矩阵,因此矩阵一的列等于矩阵二的行:

t(apply(task2, 1, function(x) {
  colSums(matrix(pmax(0,x-actor), ncol=ncol(task2)))
}))
#      [,1] [,2] [,3]
# [1,]    1    0    0
# [2,]    4    1    1

更新

解释该函数正在执行的操作有助于一次运行一行:

#The generalized function
function(x) {
  colSums(matrix(pmax(0,x-actor), ncol=ncol(task2)))
}

仅通过替换为以下task2[1,]位置将其应用于第一行x

colSums(matrix(pmax(0, task2[1,] - actor), ncol=ncol(task2)))
[1] 1 0 0

我们正在创建一个新矩阵并采用列总和。让我们更详细地了解它。在函数的核心,我们将的第一行task2与矩阵进行比较actor

task2[1,] - actor
     X..1. X..2. X..3.
[1,]     0    -4     0
[2,]     1    -1    -3
[3,]    -1     0    -1

这是最重要的部分。它根据需要减去矩阵。其余所有代码都是使它看起来不错的一种方法。

当我们添加pmax上面具有的漂亮矩阵时,它变成一个向量:

pmax(0, task2[1,] - actor)
[1] 0 1 0 0 0 0 0 0 0

数字是正确的,但是看起来像这样我们无法获得每一列的总和。因此,我们将其转换为具有相同列数的矩阵,其中:

matrix(pmax(0, task2[1,] - actor), ncol=ncol(task2))
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    1    0    0
[3,]    0    0    0

现在,它是我们需要的形式。但是我们只需要每一列的总和,所以我们添加colSums

colSums(matrix(pmax(0, task2[1,] - actor), ncol=ncol(task2)))
[1] 1 0 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个不同矩阵中元素之间的欧式距离?

来自分类Dev

R中两个矩阵之间的元素交集

来自分类Dev

如何对两个矩阵求和?

来自分类Dev

javascript对两个类元素求和

来自分类Dev

在两个矩阵之间查找值

来自分类Dev

两个矩阵之间的行相关

来自分类Dev

两个矩阵之间的xcorr

来自分类Dev

在两个矩阵之间查找值

来自分类Dev

两个线段之间的转换矩阵

来自分类Dev

匹配两个矩阵之间的行

来自分类Dev

两个矩阵求和函数返回不同的值

来自分类Dev

对矩阵列表求和,对NA有两个约束

来自分类Dev

两个矩阵求和函数返回不同的值

来自分类Dev

如何计算矩阵中两个元素之间的最大欧几里得距离-R?

来自分类Dev

tensorflow:如何在两个稀疏矩阵之间执行元素乘法

来自分类Dev

确定两个元素之间的关系

来自分类Dev

列表之间的两个公共元素

来自分类Dev

对两个Numpy数组之间的平方差求和

来自分类Dev

C ++程序,将两个整数之间的数字求和

来自分类Dev

从矩阵/向量中提取两个数字之间的元素

来自分类Dev

对数组中的两个连续元素求和

来自分类Dev

PHP将两个多维数组的元素求和

来自分类Dev

如何对两个列表的元素求和。哈斯克尔

来自分类Dev

Java:如何求和两个长度不同的数组的元素

来自分类Dev

如何对数组的两个元素求和?

来自分类Dev

如何在两个栅格(矩阵)之间替换值?

来自分类Dev

本征中两个矩阵之间的成对差异

来自分类Dev

计算两个矩阵中行的每个组合之间的距离

来自分类Dev

两个矩阵之间的最短路径