矩阵相乘这个代码也应该是需要掌握的内容,今天一大早就写了一下

可能我写的比较繁琐,也是比较复杂慢的方法 不过最后还是实现了两个矩阵相乘,后续再简化把,废话不多说附上代码和运行结果

#include"stdafx.h"
#include<iostream>
using namespace std;
int Calculate(int a[10][10],int b[10][10])
{
	int n,m,l,k;
	int c[10][10];
	int sum=0;
	cout<<"请输入A矩阵的行和列:"<<endl;
	cin>>n>>m;
	cout<<"请输入A矩阵的元素:"<<endl;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{

			cin>>a[i][j];
		}
	}

	cout<<"请输入B矩阵的行和列:"<<endl;
	cin>>l>>k;
	cout<<"请输入B矩阵的元素:"<<endl;
	for(int i=0;i<l;i++)
	{
		for(int j=0;j<k;j++)
		{

			cin>>b[i][j];
		}
	}
	cout<<"A矩阵为:"<<endl;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<"B矩阵为:"<<endl;
	for(int i=0;i<l;i++)
	{
		for(int j=0;j<k;j++)
		{
			cout<<b[i][j]<<" ";
		}
		cout<<endl;
	}
	if(m==l)
	{
		for(int i=0;i<n;i++)
	    {
		 for(int j=0;j<k;j++)
		 {
			for(int x=0;x<m;x++)
			{
			   sum+=a[i][x]*b[x][j];
			}
		 }
		for(int s=0;s<k;s++)
		{
			c[i][s]=sum;
		}
	 }
	}
	else
	{
		cout<<"两个矩阵的下标不同,无法相乘....\n";
		return 0;
	}
	cout<<"相乘矩阵为:"<<endl;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<k;j++)
		{
			cout<<c[i][j];
		}
		cout<<endl;
	}
	return c[n][k];
}
int main()
{

	int a[10][10],b[10][10];
	Calculate(a,b);
	system("pause");
	return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 18:40:23

矩阵相乘这个代码也应该是需要掌握的内容,今天一大早就写了一下的相关文章

CUDA 矩阵相乘完整代码

#include "cuda_runtime.h"#include "device_launch_parameters.h" #include <stdio.h>#include <stdlib.h>#include <time.h>#include "cublas_v2.h" #define BLOCK_SIZE 16 cudaError_t multiCuda(float *c, float *a, flo

【CUDA并行编程之四】矩阵相乘

前面介绍了基本的Cuda编程的相关知识,那么这一篇在此基础之上来看看GPU在处理数据计算上的高效能,我们拿矩阵相乘来作为例子. 1.CPU上执行矩阵相乘以及性能. 在CPU上进行矩阵相乘运算的代码: mat_mul.cc: <span style="font-family:Microsoft YaHei;font-size:18px;">//a[i]*b[i] + c[i] = d[i] #include<iostream> #include<vector

如何轻松干掉svd(矩阵奇异值分解),用代码说话

svd我认识我机器学习里面最扯淡的玩意了.尼玛.老实说,好多机器学习的书老是在扯svd有多高端,然后看了netflix电影推荐大赛,哇塞,冠军队就是用svd+做的.然后狠狠的下载了所有他们的论文,硬是没看明白.后来居然对svd有恐惧感.感觉这个玩意好高端似的.你看他啊,它能提高预测精度,它好像是万能的,能降维,什么比赛有事没事都要扯扯svd.后来看Kaggle上的比赛,有个walmat仓储量预测大赛,也是对数据先用svd预处理. 回去下载了好多svd论文看,搞了好久都没搞明白.他们都是说自己如何

矩阵相乘

有一个x*y的矩阵和一个y*z矩阵相乘,元素均为整数,求两个矩阵相乘得到的矩阵.这是一道华为OJ题,具体描述忘记了,大致内容如此.并且要求实现的函数参数为指针. 例如矩阵1为 int m1[1][3]={2,-6,3}; 矩阵2为 int m2[3][1]={4,-2,-4}; 乘积矩阵初始化为 int r[1][1]=0; 要求实现的函数为 void matrix_multiple(int *m1,int *m2,int *r,int x,int y,int z) 代码如下: void mat

稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结

稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 一:稀疏矩阵的三元组顺序表数据结构 typedef int ElemType; typedef struct { intx, y;  //该非零元素的行下标和列下标 ElemTypee; //该非零元素的值 } Triple; typedef struct { Tripledata[MAXSIZE]; //非零元素三元组顺序表 intmu, nu, t

HDU 4920 Matrix multiplication(矩阵相乘)

各种TEL,233啊.没想到是处理掉0的情况就可以过啊.一直以为会有极端数据.没想到竟然是这样的啊..在网上看到了一个AC的神奇的代码,经典的矩阵乘法,只不过把最内层的枚举,移到外面就过了啊...有点不理解啊,复杂度不是一样的吗.. Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 640 

使用cublas 矩阵库函数实现矩阵相乘

2014-08-10 cublas中执行矩阵乘法运算的函数 首先要注意的是cublas使用的是以列为主的存储方式,和c/c++中的以行为主的方式是不一样的.处理方法可参考下面的注释代码 // SOME PRECAUTIONS: // IF WE WANT TO CALCULATE ROW-MAJOR MATRIX MULTIPLY C = A * B, // WE JUST NEED CALL CUBLAS API IN A REVERSE ORDER: cublasSegemm(B, A)!

CUDA范例精解通用GPU架构-(2)其实写个矩阵相乘并不是那么难

程序代码及图解析: #include <iostream> #include "book.h" __global__ void add( int a, int b, int *c ) { *c = a + b; } int main( void ) { int c; int *dev_c; HANDLE_ERROR( cudaMalloc( (void**)&dev_c, sizeof(int) ) ); add<<<1,1>>>

矩阵相乘优化算法实现讲解

矩阵相乘      什么是矩阵? 在数学中,矩阵(Matrix)是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵.这一概念由19世纪英国数学家凯利首先提出. 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中.并且在ACM竞赛,有很多涉及到矩阵知识的题.许多算法都会结合矩阵来处理,而比较具有代表性的矩阵算法有:矩阵快速幂.高斯消元等等. 例如下面的图片就是一个矩阵: 上述矩阵是一个 4 × 3 矩阵: 某矩阵 A 的第 i 行第 j 列,或 I , j位,通常记为