Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实现两个N*N矩阵的乘法,矩阵由一维数组表示

实现两个N*N矩阵的乘法,矩阵由一维数组表示

作者头像
猿人谷
发布于 2018-01-17 07:13:48
发布于 2018-01-17 07:13:48
1.3K00
代码可运行
举报
文章被收录于专栏:猿人谷猿人谷
运行总次数:0
代码可运行

实现两个N*N矩阵的乘法,矩阵由一维数组表示。

先介绍一下矩阵的加法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1     void Add(int rows, int cols)  
2     {  
3        for(int i= 0;i<rows;i++)  
4        {  
5        for(int j=0;j<cols;j++)  
6           result[i][j]=mat1[i][j]+mat2[i][j];  
7        }  
8     } 

若两个矩阵要做乘法运:只有在一个矩阵的行数与另一个矩阵的列数相同时,才能做两个矩阵的乘法。

如何得到矩阵的转置

矩阵的转置也是一个矩阵,原始矩阵中的行转变为转置矩阵的列。例如,有下述一个3×3矩阵:

1 2 3 6 7 8 4 5 9

那么它的转置矩阵为:

1 6 4 2 7 5 3 8 9

让我们从程序员的角度仔细地考察一下这一现象。假设原始数组为M,转置矩阵为MT。那么M[1][0]=6,在转置矩阵中我们发现MT [0][1]=6。因此,我们能够得到程序化的结论:转置一个矩阵实际上就是对换下标变量。用技术术语讲:

  1. MT[Row][Column] = M[Column][Row]; 

下面是得到转置矩阵的C代码:

代码语言:js
AI代码解释
复制
void show_transpose(float mat[][10],int row,int col)  
{  
   int i,j;  
   for(i=0;i<row;i++)  
   {  
      for(j=0;j<col;j++)  
         printf("%f\t",mat[j][i]);  
      printf("\n");  
   }  
} 

这个方法显示了矩阵的转置。

代码语言:js
AI代码解释
复制
#include<iostream> 
using namespace std;  
#define size 2 
 
int multi(int *a , int *b , int N)  
{  
 int i , j , k , temp;  
 int *c = (int*)malloc(N * N);  
 for(i = 0 ; i < N ; i++)  
    {  
 for(j = 0 ; j < N ; j++)  
        {  
            temp = i * N + j;  
            *(c + temp) = 0;  
 for(k = 0 ; k < N ; k++)  
            {  
                *(c + temp) += a[i * N + k] * b[k * N + j];  
            }  
            cout<<*(c + temp)<<" ";  
        }  
    }  
 return *c;  
}  
 
int main()  
{  
 int a[size * size] = {2 , 1 , 4 , 3};  
 int b[size * size] = {1 , -1 , 3 , 2};  
    multi(a , b , size);  
 
 return 0;  
} 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-08-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
1720
【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作
C++实现矩阵类(附代码和功能)
阅读这篇文章需要掌握C++类的知识以及线性代数的知识,如果有疑问,可在文章下方评论,作者会尽快回复;本文是在作者阅读了平冈和幸的程序员的数学3:线性代数之后而写,在代码设计上借鉴了书中的方法。
全栈程序员站长
2022/09/13
2K0
C++实现矩阵类(附代码和功能)
SLAM初探:Eigen库简单使用
Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可。
小白学视觉
2019/11/07
3K1
【数据结构】数组和字符串(八):稀疏矩阵的链接存储:十字链表的创建、插入元素、遍历打印(按行、按列、打印矩阵)、销毁
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
4330
【数据结构】数组和字符串(八):稀疏矩阵的链接存储:十字链表的创建、插入元素、遍历打印(按行、按列、打印矩阵)、销毁
【数据结构】数组和字符串(十):稀疏矩阵的链接存储:十字链表的矩阵操作(加法、乘法、转置)
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
1500
【数据结构】数组和字符串(十):稀疏矩阵的链接存储:十字链表的矩阵操作(加法、乘法、转置)
C++版 - 剑指offer 面试题20:顺时针打印矩阵及其变形(LeetCode54. Spiral Matrix旋转矩阵) 题解
剑指offer 面试题20:顺时针打印矩阵 题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
Enjoy233
2019/03/05
1.2K0
C++版 - 剑指offer 面试题20:顺时针打印矩阵及其变形(LeetCode54. Spiral Matrix旋转矩阵) 题解
【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
2370
【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)
【数据结构】数组和字符串(三):特殊矩阵的压缩存储:三角矩阵、对称矩阵——一维数组
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
2230
【数据结构】数组和字符串(三):特殊矩阵的压缩存储:三角矩阵、对称矩阵——一维数组
稀疏矩阵转置
矩阵是线性代数中的一个知识,刚开始学习的时候可能感觉不到它有什么用处,最初的感觉就是对二维数据的操作。其实现实生活中矩阵的用处太大了,设计领域相当的广泛。在此只讨论稀疏矩阵的转置问题;
大黄大黄大黄
2018/09/14
1.7K0
稀疏矩阵转置
如何对图像进行卷积操作[通俗易懂]
2、卷积操作:卷积核与原图对应位置相乘再求和;然后将所求和放在被卷积操作的图中心位置。
全栈程序员站长
2022/08/26
3K0
如何对图像进行卷积操作[通俗易懂]
备战第16届蓝桥杯——数组题目(一二维简单)
给定一个一维数组 nums 和一个整数 k,将数组中的每个元素向右移动 k 个位置。
红目香薰
2024/11/14
1080
备战第16届蓝桥杯——数组题目(一二维简单)
【数据结构】数组和字符串(九):稀疏矩阵的链接存储:十字链表的插入、查找、删除操作
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
890
【数据结构】数组和字符串(九):稀疏矩阵的链接存储:十字链表的插入、查找、删除操作
【数据结构】串与数组
文章目录 4. 串与数组 4.1 串概述 4.2 串的存储 4.3 顺序串 4.3.1 算法:基本功能 4.3.2 算法:扩容 4.3.3 算法:求子串 4.3.4 算法:插入 4.3.5 算法:删除 4.3.6 算法:比较 4.4 模式匹配【难点】 4.4.1 概述 4.4.2 Brute-Force算法:分析 4.4.3 Brute-Force算法:算法实现 4.4.4 KMP算法:动态演示 4.4.5 KMP算法:求公共前后缀 next数组 -- 推导 4.4.6 KMP算法:求公共前后缀 next数
陶然同学
2023/02/26
4K0
【数据结构】串与数组
机器学习的数学 之 python 矩阵运算
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢!
二哥聊运营工具
2021/12/17
6590
机器学习的数学 之 python 矩阵运算
车牌识别 之 字符分割
直接贴代码: #include "stdafx.h" #include "cv.h" #include "highgui.h" using namespace std; using namespace cv; IplImage *g_pGrayImage = NULL; IplImage *g_pBinaryImage = NULL; const char *pstrWindowsBinaryTitle = "二值图"; void on_trackbar(int pos) {
MachineLP
2022/05/09
1.6K0
车牌识别 之 字符分割
【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
1480
【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
Eigen 使用教程
MatrixX 开头的为动态矩阵,两个维度都可以变化,本质为 Matrix<Type, Dynamic, Dynamic> 定义的类型
为为为什么
2023/02/21
3.1K0
【数据结构】数组和字符串(一):数组的基本操作、矩阵的数组表示
  数组是一种数据结构,用于存储相同类型的元素序列。它是在内存中连续存储的一组相同类型的数据。数组在计算机科学和编程中扮演着重要的角色,因为它们能够有效地存储和访问大量数据。
Qomolangma
2024/07/30
1510
【数据结构】数组和字符串(一):数组的基本操作、矩阵的数组表示
【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组
  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。为节约存储空间和算法(程序)运行时间,通常会采用压缩存储的方法。
Qomolangma
2024/07/30
1660
【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组
OpenCV图像处理专栏十 | 利用中值滤波进行去雾
这是OpenCV图像处理专栏的第十篇文章,介绍一种利用中值滤波来实现去雾的算法。这个方法发表于国内的一篇论文,链接我放附录了。
BBuf
2019/12/26
8730
OpenCV图像处理专栏十 | 利用中值滤波进行去雾
推荐阅读
【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作
1720
C++实现矩阵类(附代码和功能)
2K0
SLAM初探:Eigen库简单使用
3K1
【数据结构】数组和字符串(八):稀疏矩阵的链接存储:十字链表的创建、插入元素、遍历打印(按行、按列、打印矩阵)、销毁
4330
【数据结构】数组和字符串(十):稀疏矩阵的链接存储:十字链表的矩阵操作(加法、乘法、转置)
1500
C++版 - 剑指offer 面试题20:顺时针打印矩阵及其变形(LeetCode54. Spiral Matrix旋转矩阵) 题解
1.2K0
【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)
2370
【数据结构】数组和字符串(三):特殊矩阵的压缩存储:三角矩阵、对称矩阵——一维数组
2230
稀疏矩阵转置
1.7K0
如何对图像进行卷积操作[通俗易懂]
3K0
备战第16届蓝桥杯——数组题目(一二维简单)
1080
【数据结构】数组和字符串(九):稀疏矩阵的链接存储:十字链表的插入、查找、删除操作
890
【数据结构】串与数组
4K0
机器学习的数学 之 python 矩阵运算
6590
车牌识别 之 字符分割
1.6K0
【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
1480
Eigen 使用教程
3.1K0
【数据结构】数组和字符串(一):数组的基本操作、矩阵的数组表示
1510
【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组
1660
OpenCV图像处理专栏十 | 利用中值滤波进行去雾
8730
相关推荐
【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验