ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

R语言中矩阵的常规操作

2022-09-10 14:03:28  阅读:166  来源: 互联网

标签:tri 语言 ## 三角 矩阵 常规 相乘 mat


 

001、

mat <- matrix(1:16, 4, 4)             ## 生成矩阵        
mat                                   ## 显示矩阵

 

 

 

002、提取矩阵的对角线

mat
diag(mat)                    ## 提取矩阵的对角线

 

 

 

003、利用diag生成单位矩阵

diag(5)           ## 生成单位矩阵

 

 

 

004、提取矩阵的上三角矩阵及下三角矩阵

mat
lower.tri(mat)            ## 返回下三角矩阵的索引
mat[lower.tri(mat)]       ## 提取下三角矩阵的元素
upper.tri(mat)            ## 返回上三角矩阵的索引
mat[upper.tri(mat)]       ## 提取上三角矩阵的元素

 

 

005、利用矩阵的下三角构建对称矩阵

mat
mat1 <- mat
mat1[upper.tri(mat1)] <- t(mat1)[upper.tri(mat1)]          ## 以下三角矩阵构建对称矩阵
mat1

 

利用矩阵的上三角构建对称矩阵:

mat
mat2 <- mat
mat2[lower.tri(mat2)] <- t(mat2)[lower.tri(mat2)]   ## 利用矩阵的上三角矩阵构建对称矩阵
mat2

 

006、将矩阵转换为行列的形式

mat
rows <- rep(1:nrow(mat), times = ncol(mat))            ## 生成行序号
rows
cols <- rep(1:ncol(mat), each = nrow(mat))             ## 生成列序号
cols
values <- as.numeric(mat)                              ## 返回矩阵的元素
result <- data.frame(rows, cols, values)               ## 生成数据框

 

 

 

 

007、将三列的形式转换为矩阵

result
rows <- max(result[,1])               ## 提取行数
cols <- max(result[,2])               ## 提取列数
values <- result[,3]                  ## 提取值
mat2 <- matrix(values, rows, cols)    ## 生成矩阵
mat2

 

 

 

008、将矩阵转置

mat
t(mat)                      ## 将矩阵转置

 

 

 

009、矩阵相加减

mat1 <- matrix(1:16,4,4)
mat2 <- mat1                          ## 矩阵相加减仅适合同维度矩阵
mat1
mat2
mat1 + mat2                           ## 矩阵相加
mat1 - mat2                           ## 矩阵相减

 

 

 

010、数与矩阵相乘除

mat <- matrix(1:16,4,4)
mat
2 * mat                         ## 数于矩阵相乘除
mat / 2

 

011、矩阵相乘(矩阵相乘的条件是左侧矩阵的列数等于右侧矩阵的行数, 矩阵相乘的结果的维度是左侧矩阵的行数,右侧矩阵的列数)

mat1 <- matrix(1:6, 2, 3)     ## 两行三列的矩阵
mat1
mat2 <- matrix(1:6, 3, 2)     ## 三行两列的矩阵
mat2
mat1 %*% mat2                 ## 左侧矩阵的列数等于右侧矩阵的行数, 矩阵相乘的符号为%*%

 

 

012、计算t(A)%*%B的方法

方法1:

A <- matrix(1:12,3,4)
B <- matrix(1:15,3,5)
t(A)
B
t(A)%*%B                       ## 转置后矩阵相乘

 

 

方法2:用crossprod函数,数据量大时效率更高

A <- matrix(1:12,3,4)
B <- matrix(1:15,3,5)
A
B
crossprod(A,B)             ## 矩阵A转置后于矩阵B相乘

 

标签:tri,语言,##,三角,矩阵,常规,相乘,mat
来源: https://www.cnblogs.com/liujiaxin2018/p/16676358.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有