矩阵转置与矩阵相乘

矩阵转置与矩阵相乘1.转置矩阵1.1转置矩阵简介把矩阵A的行换成同序数的列得到的新矩阵,叫做A的转置矩阵(TransposeofaMatrix),记作ATA^T。例如:因此,转置矩阵的特点:(1)转置矩阵的行数是原矩阵的列数,转置矩阵的列数是原矩阵的行数;(2)转置矩阵下标(i,j)的元素对应于原矩阵下标(j,i)的元素。1.2实现使用二维数组作为矩阵的存储结构,根据转置矩阵的特点,很容易得到转置

大家好,又见面了,我是你们的朋友全栈君。

前言

写这篇博客的原因是为了记录一下矩阵转置与矩阵相乘的实现代码,供日后不时之需。直接原因是今晚(2016.09.13)参加了百度 2017 校招的笔试(C++岗),里面就有一道矩阵转置后相乘的在线编程题。考虑到日后笔试可能会用到,特此记录,也希望能够帮助到需要的网友。

今晚的百度笔试还有一个道求矩形方格中房子的数量,可以用类似于求迷宫中寻找可行路径的深度优先搜索(DFS)加回溯法来求解,幸好之前研究过迷宫问题并记录下来写成博客,要不然,又悲剧了,短时间内很难写出那么多代码!

1.矩阵转置

1.1 简介

把矩阵 A 的行换成同序数的列得到的新矩阵,叫做 A 的转置矩阵(Transpose of a Matrix),记作 A T A^T AT

例如:
这里写图片描述
因此,转置矩阵的特点:
(1)转置矩阵的行数等于原矩阵的列数,转置矩阵的列数等于原矩阵的行数;
(2)转置矩阵下标(i,j)的元素对应于原矩阵下标(j,i)的元素。

1.2 实现

使用二维数组作为矩阵的存储结构,根据转置矩阵的特点,很容易得到转置矩阵。

/**************************************************
*@para:matrix:原矩阵;row:矩阵行数;column:矩阵列数
*@ret:返回转置矩阵
**************************************************/
int** getTransposeMatrix(int** matrix,int row,int column){
   int** matrixR=new int*[columns];
   for(int i=0;i<columns;++i){
        matrixR[i]=new int[rows];
   }
   
   for(int i=0;i<row;++i){
        for(int j=0;j<column;++j){
            matrixR[j][i]=matrix[i][j];
        }
   }
   return matrixR;
}

2.矩阵相乘

2.1 简介

设 A 为 m × p m\times p m×p 的矩阵,B 为 p × n p\times n p×n 的矩阵,那么称 m × n m\times n m×n 的矩阵 C 为矩阵 A 与 B 的乘积,记作 C=AB ,其中矩阵 C 中的第 i 行第 j 列元素可以表示为:
这里写图片描述

示例如下:
这里写图片描述

矩阵相乘的特点:
(1)当矩阵 A 的列数等于矩阵 B 的行数时,A 与 B 才可以相乘。
(2)乘积 C 的第 m 行第 n 列的元素等于矩阵 A 的第 m 行的元素与矩阵 B 的第 n 列对应元素乘积之和。
(3)矩阵 C 的行数等于矩阵 A 的行数,C 的列数等于 B 的列数。

2.2 示例代码

/********************************************
*@para:A:矩阵A;B:矩阵B;C:相乘结果矩阵;rowA:A的行数;columnB:B的列数;columnA:A的列数
*@ret:void 
********************************************/
void matrixMul(int **A, int **B, int **C, int rowA, int columnB, int columnA){
    for (int i=0;i<rowA;i++){
        for (int j=0; j<columnB;j++){
            C[i][j] = 0;
            for (int k=0;k<columnA;k++){
                C[i][j]+=A[i][k]*B[k][j];
            }
         }
     }
}

参考文献

[1] 转置矩阵 百度百科
[2] 矩阵乘法 百度百科

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148712.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • aria2最新tracker服务器,【无灯+Hiboy】padavan下自动更新aria2的BT tracker 服务器列表…「建议收藏」

    aria2最新tracker服务器,【无灯+Hiboy】padavan下自动更新aria2的BT tracker 服务器列表…「建议收藏」本帖最后由Wildest_Dreams于2018-12-2120:00编辑首先,在`/etc/storage`目录创建`trackers_list_aria2.sh`在其它目录重启就会丢失脚本!在其它目录重启就会丢失脚本!在其它目录重启就会丢失脚本!荒野无灯版请输入以下代码:#!/bin/bash/usr/bin/aria.shstoplist=`wget-qO-https://r…

  • RPN网络通俗理解

    RPN网络通俗理解【提特征】RPN网络前面是一个提特征的网络,比如VGG,Res等,传给RPN网络的是一个特征图,其实也就是一个tensor比如用ZF网络(论文里面用的)输出特征图:13*13*256【RPN】拿到模型的特征,RPN网络首先加了一个3*3*256*256的卷积层(其实不是很清楚为什么加,可能是为了扩大感受野)这样就会得到11*11*256的输出,前面11*11是图形矩阵,其中每一个点在原图中都是一个…

  • SQL语句中的嵌套子查询「建议收藏」

    SQL语句中的嵌套子查询「建议收藏」SQL语句;相关子查询;求选修了所有课程的学生的学号

  • 深度学习-softmax损失函数「建议收藏」

    深度学习-softmax损失函数「建议收藏」softmax损失函数softmax函数定义softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而进行多分类!softmax计算公式,假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值为:Si=ei∑jejS_i=\frac{e^i}{\sum_je^j}对于softmax定义比较简单,当我们在应用多

  • python 如何安装numpy库?

    python 如何安装numpy库?我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您!(为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!)首先我们要找到python安装的位置win+R打开进入以后输入:wherepython找到安装目录后,找到Scripts文件夹所在位置:如Programs\Python\Python36\Scripts…

  • 关于.gitignore不起作用「建议收藏」

    关于.gitignore不起作用「建议收藏」由于公司和家里的as版本不同,倒腾了好久,但是代码到本地后build.gradle等文件做了修改,为了不影响公司版本,故家里的需要忽略这些文件的修改,想到的就是加gitignore配置,直接添加不起效果,找到如下办法:有时我们发现添加.gitignore文件后并没有忽略我们想要忽略的文件,解决方法就是清除一下缓存,原因gitignore对已经追踪(track)的文件无效,清除缓存后文件将以未追

    2022年10月21日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号