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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。