當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R matmult-methods 矩陣(叉)積(轉置)


R語言 matmult-methods 位於 Matrix 包(package)。

說明

基本矩陣乘積,%*%為我們所有的人實施Matrix也為了sparseVector類,完全類似於R的基地matrix和矢量對象。

函數 crossprodtcrossprod 是矩陣乘積或 “cross products”,理想情況下可以有效實現,而無需計算 t(.) 。當易於檢測時,它們還會返回 symmetricMatrix 分類矩陣,例如,在 crossprod(m) 中,即單參數情況。

tcrossprod() 采用矩陣轉置的cross-product。 tcrossprod(x) 形式上相當於調用 x %*% t(x) ,但比調用 x %*% t(x) 更快,tcrossprod(x, y) 而不是 x %*% t(y) 也是如此。

布爾矩陣乘積通過 %&%boolArith = TRUE 計算。

用法

## S4 method for signature 'CsparseMatrix,diagonalMatrix'
x %*% y

## S4 method for signature 'dgeMatrix,missing'
crossprod(x, y = NULL, boolArith = NA, ...)
## S4 method for signature 'CsparseMatrix,diagonalMatrix'
crossprod(x, y = NULL, boolArith = NA, ...)
       ## .... and for many more signatures

## S4 method for signature 'CsparseMatrix,ddenseMatrix'
tcrossprod(x, y = NULL, boolArith = NA, ...)
## S4 method for signature 'TsparseMatrix,missing'
tcrossprod(x, y = NULL, boolArith = NA, ...)
       ## .... and for many more signatures

參數

x

類似矩陣的對象

y

類似矩陣的對象,或 [t]crossprod() NULL(默認情況下);後一種情況在形式上相當於 y = x

boolArith

logical ,即 NATRUEFALSE 。如果為 true,則結果是(強製)模式矩陣,即 "nMatrix" ,除非存在 NA 條目,並且結果將是 "lMatrix" 。如果為 false,則結果為(強製)數字。當 NA 時(當前默認值),當 xy"nsparseMatrix" 時,結果為模式矩陣,否則為數字。

...

可能會有更多的參數傳入和傳出方法。

細節

對於Matrix包中的一些類,例如dgCMatrix,直接計算轉置的cross-product比先計算轉置再計算cross-product要快得多。

boolArith = TRUE 對於常規 (“non cross”) 矩陣乘積,無法指定 %*%。相反,我們為布爾矩陣乘積提供%&% 運算符。

一個 Matrix 對象,在適當的對稱矩陣類的一個參數情況下,即繼承自 symmetricMatrix

方法

%*%

signature(x = "dgeMatrix", y = "dgeMatrix"):矩陣乘法;其他幾個簽名組合也是如此,請參閱 showMethods("%*%", class = "dgeMatrix")

%*%

signature(x = "dtrMatrix", y = "matrix") 和其他簽名(使用 showMethods("%*%", class="dtrMatrix") ):矩陣乘法。 (匹配)三角矩陣的乘法現在應保持三角形(在類 triangularMatrix 的意義上)。

交叉產品

signature(x = "dgeMatrix", y = "dgeMatrix") :其他幾個簽名也是如此,使用 showMethods("crossprod", class = "dgeMatrix") 、矩陣叉積、t(x) %*% y 的高效版本。

交叉產品

signature(x = "CsparseMatrix", y = "missing")t(x) %*% x 作為 dsCMatrix 對象返回。

交叉產品

signature(x = "TsparseMatrix", y = "missing")t(x) %*% x 作為 dsCMatrix 對象返回。

交叉產品,交叉產品

signature(x = "dtrMatrix", y = "matrix")和其他簽名,請參見上麵的"%*%"

注意

Matrix 1.2.0(2015 年 3 月)新引入了boolArith = TRUEFALSENA。其實施尚未經過廣泛測試。值得注意的是,帶有包含額外零的 x 槽的稀疏矩陣的行為之前尚未記錄,請參閱 %&% 幫助頁麵。

目前,boolArith = TRUE 是通過 CsparseMatrix 強製轉換實現的,這對於密集矩陣來說可能非常低效。歡迎為提高效率做出貢獻。

例子


 ## A random sparse "incidence" matrix :
 m <- matrix(0, 400, 500)
 set.seed(12)
 m[runif(314, 0, length(m))] <- 1
 mm <- as(m, "CsparseMatrix")
 object.size(m) / object.size(mm) # smaller by a factor of > 200

 ## tcrossprod() is very fast:
 system.time(tCmm <- tcrossprod(mm))# 0   (PIII, 933 MHz)
 system.time(cm <- crossprod(t(m))) # 0.16
 system.time(cm. <- tcrossprod(m))  # 0.02

 stopifnot(cm == as(tCmm, "matrix"))

 ## show sparse sub matrix
 tCmm[1:16, 1:30]

也可以看看

tcrossprodR的基地,並且crossprod%*%.Matrix%&%對於布爾矩陣乘積方法。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Matrix (Cross) Products (of Transpose)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。