matmult-methods 位於 Matrix 包(package)。 說明
基本矩陣乘積,%*%為我們所有的人實施Matrix也為了sparseVector類,完全類似於R的基地matrix和矢量對象。
函數 crossprod 和 tcrossprod 是矩陣乘積或 “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 |
類似矩陣的對象,或 |
boolArith |
|
... |
可能會有更多的參數傳入和傳出方法。 |
細節
對於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 = TRUE、FALSE 或NA。其實施尚未經過廣泛測試。值得注意的是,帶有包含額外零的 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]
也可以看看
tcrossprod在R的基地,並且crossprod和%*%.Matrix包%&%對於布爾矩陣乘積方法。
相關用法
- R mat2triplet 將矩陣映射到其三元組表示
- R dtrMatrix-class 三角形稠密數值矩陣
- R facmul-methods 乘以矩陣因式分解的因數
- R solve-methods 函數求解矩陣包中的方法
- R updown-methods 更新和降級稀疏 Cholesky 分解
- R bdiag 構建分塊對角矩陣
- R printSpMatrix 靈活格式化和打印稀疏矩陣
- R symmetricMatrix-class 包矩陣中對稱矩陣的虛擬類
- R all.equal-methods 函數 all.equal() 的矩陣封裝方法
- R boolmatmult-methods 布爾算術矩陣乘積:%&% 和方法
- R ltrMatrix-class 三角密集邏輯矩陣
- R Hilbert 生成希爾伯特矩陣
- R nearPD 最近正定矩陣
- R lsyMatrix-class 對稱密集邏輯矩陣
- R CHMfactor-class 稀疏 Cholesky 分解
- R symmpart-methods 矩陣的對稱部分和偏斜(對稱)部分
- R sparseMatrix 從非零項構建一般稀疏矩陣
- R dgCMatrix-class 壓縮、稀疏、麵向列的數值矩陣
- R Cholesky-methods Cholesky 分解方法
- R Subassign-methods “[<-”的方法 - 分配給“矩陣”的子集
- R ldenseMatrix-class 密集邏輯矩陣的虛擬類“ldenseMatrix”
- R norm-methods 矩陣範數
- R ngeMatrix-class 一般密集非零模式矩陣的“ngeMatrix”類
- R CAex 阿爾伯斯的示例矩陣與“困難”特征分解
- R diagonalMatrix-class 對角矩陣的“diagonalMatrix”類
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Matrix (Cross) Products (of Transpose)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
