带条件的产品的数学抽象

math abstraction of out product with condition

我有两个数组要比较。比较 b 中的标签 True/False :

a=c(2.9,3.7,3.8, 2.7,3.3, 3.9) and b=c(18,21, 30 ,21, 17, 27)

我用

 compare=outer(a,a,'>=') & outer(b,b,'>=') # Return True if a[1]>=a[2] and b[1]>=b[2], etc

获取布尔矩阵:

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

    [1,]  TRUE FALSE FALSE FALSE FALSE FALSE
    [2,]  TRUE  TRUE FALSE  TRUE  TRUE FALSE
    [3,]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
    [4,] FALSE FALSE FALSE  TRUE FALSE FALSE
    [5,] FALSE FALSE FALSE FALSE  TRUE FALSE
    [6,]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE

如何将这个比较过程写成数学方式。是out品 像ab吗?

因为我假设 OP 想知道他的 R 代码的正确数学表达式,所以我认为这不是真正的 R 问题。

我给你一些 Latex 代码。假设 c_{ij} 表示 compare 矩阵的元素。然后你可以使用指标函数

http://en.wikipedia.org/wiki/Indicator_function

将您的代码翻译成数学表达式

c_{ij}=\textbf{1}_{\left[0,\infty\right)}(a_i-a_j) \cdot \textbf{1}_{\left[0,\infty\right)}(b_i-b_j)

在这种情况下,c_{ij} 将保存 01 而不是 FALSETRUE

这里很难回答这个问题,因为 Stack Overflow 不支持 LaTeX 数学模式。但是...

您需要的是 Heaviside Step 函数,通常用大写 Theta 表示。 http://en.wikipedia.org/wiki/Heaviside_step_function

Theta(x) 是 Dirac Delta 函数从负无穷大到 x 的积分。因此,对于 x<0,Theta(x) = 0,对于 x >= 0,Theta(x) = 1。

你得到了向量 a 和 b。你想要矩阵 C。在索引符号中:

C_{i j} = \Theta(a_i - a_j) \times \Theta(b_i - b_j)

C 变成了 1 和 0 的矩阵。