c++实现矩阵乘法&关系矩阵乘法

C++矩阵乘法 阅读详情

题目如图

 

 (这里都默认能够进行矩阵乘法运算)这两个题目都主要考察矩阵乘法的运算方式,较为简单。两个矩阵能够相乘的条件是第一个矩阵的列数和第二个矩阵的行数相同,例如A矩阵为3行2列,B矩阵为2行3列,则AB两个矩阵可以相乘,并且得到的矩阵为3行3列,同理若A为3行3列,B为3行2列,则得到的矩阵为3行2列
如果A矩阵为2行3列,B矩阵为2行2列,则AB两矩阵无法相乘。
在确定最终矩阵的行列数后,其第n行第m列的数就为A矩阵第n行与B矩阵第m列的数一一对应相乘后再相加的和。

这步操作可以用如下代码表示

for(int i=0;i<m;i++){
	for(int j=0;j<n;j++){
		for(int k=0;k<p;k++){
			ans[i][j] += R1[i][k]*R2[k][j];
		}
	}
}

第一题的代码如下

#include<iostream>
using namespace std;
const int N=105;
int R1[N][N],R2[N][N],ans[N][N];

int main(){
    int m,p,n;
    cin>>m>>p>>n;
    for(int i=0;i<m;i++){//录入第一个矩阵
    	for(int j=0;j<p;j++){
    		cin>>R1[i][j];
		}
	}
	for(int i=0;i<p;i++){//录入第二个矩阵
		for(int j=0;j<n;j++){
			cin>>R2[i][j];
		}
	}
	for(int i=0;i<m;i++){//两个矩阵相乘
		for(int j=0;j<n;j++){
			for(int k=0;k<p;k++){
				ans[i][j] += R1[i][k]*R2[k][j];
			}
		}
	}
	for(int i=0;i<m;i++){//输出最终矩阵
		for(int j=0;j<n;j++){
			cout<<ans[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

第二个问题是离散数学中的关系矩阵问题,设关系矩阵为R1: 1   0   1     R2:  1   0   1
                                                                                                 1   0   1          0   1   1
                                                                                                 0   1   0           1   0   0
则根据公式运算方法为
1∧1 ∨ 0∧0 ∨ 1∧1     1∧0 ∨ 0∧1 ∨ 1∧0     1∧1 ∨ 0∧1 ∨ 1∧0
1∧1 ∨ 0∧0 ∨ 1∧1     1∧0 ∨ 0∧1 ∨ 1∧0    1∧1 ∨ 0∧1 ∨ 1∧0
0∧1 ∨ 1∧0 ∨ 0∧1     0∧0 ∨ 1∧ 1 ∨ 0∧0    0∧1∨ 1∧1 ∨ 0∧0


因为数据量较小,我们还可以采用如下方法;观察到两数合取时只有都为1时,结果为1,其余为0,与矩阵乘法类似;而每项数据之间又是合取,所以只要
经过矩阵乘法后得到结果大于等于1,说明该项为1,否则为0,按此思路,只需在第一题的基础上加上判断即可,如下

if(ans[i][j]==0) ans[i][j]=0;
else ans[i][j]=1;

完整代码如下:

#include<iostream>
using namespace std;
const int N=105;
int R1[N][N],R2[N][N]; 
int ans[N][N];
int main(){
    int a,b,c;
    cin>>a>>b>>c;
	for(int i=0;i<a;i++){
		for(int j=0;j<b;j++){
			cin>>R1[i][j];
		}
	} 
	for(int i=0;i<b;i++){
		for(int j=0;j<c;j++){
			cin>>R2[i][j];
		}
	} 
	
	for(int i=0;i<a;i++){
		for(int j=0;j<c;j++){
			for(int k=0;k<b;k++){
				ans[i][j]+=R1[i][k]*R2[k][j]; 
			}
			if(ans[i][j]==0) ans[i][j]=0;
			else ans[i][j]=1;
		}
	} 
	for(int i=0;i<a;i++){
		for(int j=0;j<c;j++){
			cout<<ans[i][j]<<' ';
		}
		cout<<endl;
	}
	return 0;
}

用C++二维指针实现矩阵的加法与乘法 用C++实现矩阵的加法与乘法 矩阵是按照长方阵列排列的实数集合,在C语言中可以用二维数组来表示 若A是m*n的矩阵 ,在C++中可以创建一个二维数组A [m] [n], 用两个变量ij来描述矩阵中某一数的行与列即A [i] [j],如下是程序的一部分, 功能是录入一个已知的矩阵A中的元素 cout&lt;&lt;"输入矩阵A"&lt;&lt;endl; cout&lt;&lt;"行数:"&lt;&... 阅读详情

相关推荐

并行矩阵乘法(C++ mpi 并行实现)

矩阵乘法(C++ mpi 并行实现)

你的问题在于,读书太少而想得太多。 3657

【C++】矩阵的乘法

由矩阵相乘的性质可以用三层循环求出结果,注意i的循环需要放在最外层,j的循环需要放在中间层,k的循环需要放在最低层。因为矩阵A是2×3矩阵,矩阵B是3×3矩阵,A的列数等于B的行数,所以矩阵A与B可以相乘,乘积AB是一个2×3矩阵。矩阵相乘时需要注意两点,一点是矩阵1的列数要等与矩阵2的行数,一点是矩阵相乘后的矩阵。手算一下AB,不难发现结果是正确的。先复习一下矩阵的乘法。

qq_63806300的博客 5206

C++矩阵乘法计算 || GPU && CPU 实现

废话 使用英伟达加速矩阵运算一般使用cublas库进行操作,在cublas库中,使用cublasSgemv()和cublasSgemm()分别进行矩阵向量间的乘法运算与矩阵矩阵间的乘法运算。本文将具体的解释上述两个函数的参数以及具体的应用例子。参照官方解释 矩阵乘法函数解释 仅仅使用单精度(float)进行解释,若想尝试双精度(double),可以进入官网查看相应函数. ...

春江水暖鸭先知 5650

矩阵乘法(C++)

一般难度的for循环应用,是典型线性代数例题

m0_74036684的博客 1万+

C++实现矩阵乘法

在矩阵乘法中,我们需要两个矩阵,一个是左矩阵A(m,k),另一个是右矩阵B(k,n)。在实现矩阵乘法时,我们需要使用二维数组来表示矩阵,并使用for循环来遍历矩阵并计算相应位置上的元素。我们首先定义了三个二维数组A、B和C,分别表示左矩阵、右矩阵和结果矩阵。在main函数中,我们首先输入矩阵的行数和列数,然后依次输入左矩阵A和右矩阵B的元素。在C++中实现矩阵乘法,我们可以使用二维数组来表示矩阵,并且使用for循环来计算乘法。两个矩阵的乘法是将它们对应位置上的元素相乘再求和得到一个新的矩阵。

PixelLogic的博客 1799

C++实现矩阵乘法:从原理到代码

矩阵乘法定义了两个矩阵相乘的规则。如果有矩阵A(m×n)和矩阵B(n×p),它们的乘积是一个m×p的矩阵C。其元素c_ij由A的第i行与B的第j列的点积确定。简单来说,每个元素c_ij是通过将A的行与B的列对应元素相乘后求和得到的。在现代编程实践中,面向对象的编程范式允许我们将数据和功能封装在称为“类”的结构中。矩阵类的设计和实现是数值计算中的一个重要方面,它需要支持各种矩阵操作,例如加法、减法和乘法。

weixin_42181686的博客 1408

C++实现关系矩阵乘法(附带源码)

关系矩阵乘法是线性代数中的一种基本操作,在图论、计算机网络、数据库等领域具有广泛的应用。在这些领域中,矩阵通常被用来表示和操作关系数据。矩阵乘法可以用来推导出这些关系的组合,尤其在处理多步关系时非常重要。

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1321

瑞芯微RV1126B芯片实战:如何用3Tops NPU打造智能安防摄像头(附配置指南)

本文详细介绍了基于瑞芯微RV1126B芯片构建高性能智能安防摄像头的实战经验。文章深入剖析了其3Tops NPU与独立AI-ISP的协同优势,提供了从硬件选型、开发环境搭建、AI模型部署到系统调优的全流程配置指南,帮助开发者充分发挥芯片潜力,实现高效、稳定的智能视觉应用。

weixin_29281915的博客 444

Strassen矩阵乘法——C++

基于分治法的矩阵快速乘法---C++实现

stu_kk的博客 2097

目标检测 RT-DETR(2023)详细解读

在使用了这个技巧后,显然训练过程中,类别的标签不再是此前的0和1离散值,而是0~1的连续值。关于 Query Selection(查询向量选择),大家应该并不陌生,这个方法可谓在DETR领域大杀四方,如DAB-DETR对查询向量进行重构理解,将其解释为Anchor,DN-DETR通过查询降噪来应对匈牙利匹配的二义性所导致的训练时间长的问题,DINO提出从Encoder中选择Top-k特征进行学习等一系列方法,这都无疑向我们证明,查询向量很重要,选择好的Query能够让我们事半功倍。在RT-DETR中,

qq_51352130的博客 5872

R | 提取文件夹内栅格数据的最小值、最大值、标准差和平均值

各位同学好,我们长需要用长时间序列栅格数据的平均值做变量的时间变化分析,用代码能够帮助我们省下很多时间。

qq_48539301的博客 450

c++实现矩阵乘法

矩阵乘法: 矩阵a=[123456]×矩阵b=[123456789101112]=矩阵c=[34445056698092104] 矩阵a= \begin{bmatrix} 1 &amp; 2 &amp; 3 \\ 4 &amp; 5 &amp; 6 \\ \end{bmatrix} \times 矩阵b= \begin{bmatrix} 1 &amp; 2 &amp; 3 &amp; 4\\ 5 &amp; 6 &amp; 7 &amp; 8\\ 9 &amp;

xjhqre的博客 7317

手把手教你用Gazebo插件实现阿克曼底盘仿真(附Navigation2适配指南)

本文提供了一份完整的ROS2 Navigation2与Gazebo阿克曼底盘仿真全栈指南。从阿克曼运动学原理出发,详细讲解了如何构建URDF/SDF模型、集成gazebo_ros_ackermann_drive插件并进行PID调优,并重点阐述了如何深度适配Navigation2,包括配置Ackermann运动模型、调整规划器与恢复行为,最终实现从建图到自主导航的全流程仿真。

weixin_29310631的博客 400

矩阵乘法 ‌‍‎‏

计算两个矩阵的乘法: 设有矩阵\(A\)为\(n×m\)阶矩阵,矩阵\(B\)为\(m×k\)阶矩阵,二者相乘得到的矩阵\(C\)是\(n×k\)阶矩阵。 对于矩阵\(C\)中的元素\(C[i][j]\)(其中\(i\)表示行序号,\(j\)表示列序号),其计算公式为: \[C[i][j] = A[i][0]×B[0][j] + A[i][1]×B[1][j] + ... + A[i][m - 1]×B[m - 1][j]\]。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 7825

OFDM调制matlab仿真详细代码

MATLAB仿真代码 % ================================================== % 作者: 肆拾伍 % 时间:11/30 2019 % 版本:V3 % =================OFDM仿真参数说明:================ % % 子载波数 carrier_count ---200 % 总符号数 symbol_count ...

肆拾伍的博客 3万+

30. 用GPT-4自动生成测试用例的完整流程

利用GPT - 4生成测试用例面临的主要问题包括:如何准确地将软件需求转化为GPT - 4能够理解的输入提示,以确保生成的测试用例覆盖所有关键功能;如何评估生成的测试用例的有效性和充分性;如何处理生成的测试用例中的错误或不合理之处;以及如何将生成的测试用例集成到现有的测试框架中。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 473

c++实现矩阵乘法运算_C中的矩阵乘法

c++实现矩阵乘法运算Here is the program for matrix multiplication in C. 这是C语言中矩阵乘法的程序。 m and n are rows and columns of first matrix. m和n是第一矩阵的行和列。 p and q are rows and columns of second matrix. p和q是第二矩阵的行...

culing2941的博客 8356

Android 10.0 kenel中修改rom系统内部存储的大小

在10.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出修改

安卓兼职framework和app工程师的博客 1407

矩阵乘法_C++实现矩阵乘法

最近学习C++,做了一个矩阵乘法的练习。先说一下功能,输入两个矩阵A,B,大小自己定,换行用;表示(matlab的习惯)。然后输出A*B的矩阵。1.思路首先,由于输入的矩阵维数是随机的,因此,我们要设计程序,手动把行和列算出来,这样方便后续乘法运算。并且把输入的数字提取出来,放入一个float型数组中,这样我们就完成了读入工作,之后就是利用乘法公式进行运算,并把结果放入一个二维数组中,最后把结果输...

weixin_28755847的博客 3606

DC-DC降压转换器PCB设计全解析

DC-DC降压转换器的PCB布局设计直接影响电源效率、电磁干扰、稳定性和热性能。关键设计因素包括:优化旁路电容布局以降低环路电感,合理规划大电流走线宽度,根据开关频率选择元件尺寸,控制热阻(RθJA)确保散热效率,以及精确布置反馈补偿网络。设计中需特别注意高di/dt路径的场效应管布线,采用紧凑布局减少寄生电感,并通过多层板结构和散热过孔优化热管理。无论是外置还是集成式场效应管设计,都需要平衡电气性能与散热需求,遵循IPC标准规范,才能实现高效可靠的电源转换方案。

一只豌豆象的博客 416

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

c++实现矩阵乘法和分块矩阵乘法

矩阵A大小 : m * p,矩阵B大小: p * m,结果矩阵C大小 : m * n,分块的大小为k * k。 废话少说,原理也不提,直接上代码 #include "iostream" #include "random" #include "vector" using namespace std; vector&lt;vector&lt;double&gt;&gt; initMatri...

dadan的博客 5082

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Strassen矩阵乘法C++实现

1 问题描述 求矩阵A,B相乘的结果C Cmn=AmbBbn C_{mn}=A_{mb}B_{bn} Cmn​=Amb​Bbn​ 2 分析 2.1 传统解法 直接根据矩阵乘法的定义来遍历计算。 Cij=∑k=1bAik×Bkj C_{ij}=\sum_{k=1}^{b}{A_{ik}\times B_{kj}} Cij​=k=1∑b​Aik​×Bkj​ c++语言代码: void matrixMul(int** A,int** B,int** C,int m,int b,int n){ for(in

qq_39545674的博客 2125

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex&trade;-M4F 内核的信息,请参见《Cortex&trade;-M4F 技术参考手册》。

c++ 实现矩阵乘法

矩阵乘法的基本实现方法是三层循环,但不同的循环顺序会影响性能,比如i-j-k和i-k-j的顺序。然后,参考内容里提到了一些优化方法,比如调整循环顺序来提高缓存命中率,使用一维数组存储矩阵,或者利用SIMD指令如AVX进行向量化加速。还有用户可能关心的是如何设计一个矩阵类,或者是否需要使用现有的库如Eigen或BLAS。首先,我应该从基础实现开始。最基本的矩阵乘法需要三个嵌套循环,遍历行、列和中间维度进行累加。参考内容中的例子大多使用了这种结构。

luoganttcc的博客 1232
上一篇: 离散数学——用c/c++求命题公式的主范式
Initial atom
博客等级 码龄5年 11粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值