c矩阵相乘

 1 #include <stdio.h>
 2 #define MAX 10
 3 void MatrixMutiply(int m,int n,int l,int MatrixA[MAX][MAX],int MatrixB[MAX][MAX],int MatrixResult[MAX][MAX])
 4 {
 5 int i,j,k;
 6 int Sum;
 7 //嵌套循环计算结果矩阵(m*l)的每个元素
 8 for(i=0;i<m;i++)
 9   for(j=0;j<l;j++)
10   {
11    /*按照矩阵乘法的规则计算结果矩阵的i*j元素*/
12    Sum=0;
13    for(k=0;k<n;k++)
14     Sum+=MatrixA[i][k]*MatrixB[k][j];
15    MatrixResult[i][j]=Sum;
16   }
17 }
18
19 int main()
20 {
21   int MatrixA[MAX][MAX],MatrixB[MAX][MAX];
22   int MatrixResult[MAX][MAX],Temp;
23   int i,j,m,n,l;
24 printf("**************************************************\n");
25 printf("               矩 阵 相 乘 算 法\n");
26 printf("**************************************************\n\n");
27
28 //输入两个矩阵的的行列数m,n,l
29 printf("\n请输入矩阵MatrixA的行数m:\n");
30 scanf("%d",&m);
31 printf("请输入矩阵MatrixA的列数n:\n");
32 scanf("%d",&n);
33 printf("请输入矩阵MatrixB的列数l:\n");
34 scanf("%d",&l);
35
36 //输入第一个矩阵的每个元素
37 printf("\n请输入矩阵MatrixA(%d*%d)的元素:\n",m,n);
38 for(i=0;i<m;i++)
39   for(j=0;j<n;j++)
40   {
41    scanf("%d",&Temp);
42    MatrixA[i][j]=Temp;
43   }
44
45 //输入第二个矩阵的每个元素
46 printf("\n请输入矩阵MatrixB(%d*%d)的元素:\n",n,l);
47 for(i=0;i<n;i++)
48   for(j=0;j<l;j++)
49   {
50    scanf("%d",&Temp);
51    MatrixB[i][j] = Temp;
52   }
53 //调用函数进行乘法运算,结果放在MatrixResult 中
54 MatrixMutiply(m,n,l,MatrixA,MatrixB,MatrixResult);
55 //打印输出结果矩阵
56 printf("\n矩阵相乘的结果MatrixResult为: \n");
57 for(i=0;i<m;i++)
58 {
59   for(j=0;j<l;j++)
60    printf("%d ",MatrixResult[i][j]);
61    printf("\n");
62 }
63 } 

时间: 2024-08-24 10:05:11

c矩阵相乘的相关文章

【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

C语言 &#183; 矩阵相乘 &#183; 算法提高

算法提高 矩阵相乘 时间限制:1.0s   内存限制:256.0MB 问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的. 小明希望你来帮他完成这个任务. 现在给你一个ai行aj列的矩阵和一个bi行bj列的矩阵, 要你求出他们相乘的积(当然也是矩阵). (输入数据保证aj=bi,不需要判断) 输入格式 输入文件共有ai+bi+2行,并且输入的所有数为整数(long long范围

矩阵相乘

有一个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

ObjC语法练习 冒泡排序、选择排序、矩阵相乘

用OC实现的冒泡排序.选择排序.矩阵相乘,纯粹是用来练习语法. 冒泡排序,程序如下: void bubbleSort() { //初始化数组 NSMutableArray *array1 = [[NSMutableArray alloc] initWithCapacity:8]; [array1 addObject:@"5"]; [array1 addObject:@"10"]; [array1 addObject:@"8"]; [array1

cublas 矩阵相乘API详解

#include "cuda_runtime.h"#include "device_launch_parameters.h" #include <stdio.h>#include <stdlib.h>#include "cublas_v2.h" void multiCPU(float *c, float *a, float *b, unsigned int aH, unsigned int aW, unsigned int

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 矩阵相乘

#include "cuda_runtime.h"#include "device_launch_parameters.h" #include <stdio.h>#include <stdlib.h>#include "cublas_v2.h" #define BLOCK_SIZE 16 /***************/ 用cuBlas的内置函数API,cublasSgemm cudaError_t multiWithc

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 

HDU 1757 矩阵相乘,快速幂模板题

HDU 1757 题意: If x < 10, f(x) = x; If x >= 10, f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + a9 * f(x-10);  给出k和mod,求f(k). 总结: 1.特别注意,矩阵相乘不满足交换律,即a*b != b*a.  2.感觉推方程有点困难. 3.矩阵初始化注意. f(x-10)   0 0 0 0 0 0 0 0 0        ( first矩阵 )       f(x-9)