任意维矩阵相乘-C实现
2012-04-25 19:04
441 查看
// matrix.cpp : Defines the entry point for the console application. // write by lhy // http://blog.csdn.net/qq752923276/article/details/7505675 #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <time.h> struct Matrix { int** array; int x; int y; }; void InitMatrix(Matrix &m,int x,int y,bool b_rand=true) { int i,j; srand((unsigned)time(0)); m.x=x; m.y=y; m.array=(int**)malloc(sizeof(int)*x); for(i=0;i<x;++i) m.array[i]=(int*)malloc(sizeof(int)*y); if(b_rand) { for (i=0;i<x;++i) { for (j=0;j<y;++j) { m.array[i][j]=rand()%100; } } } else { for (i=0;i<x;++i) { for (j=0;j<y;++j) { m.array[i][j]=0; } } } } void DestroyMatrix(Matrix &m) { int i; for (i=0;i<m.x;++i) { free(m.array[i]); } free(m.array); } void PrintMatrix(Matrix &m) { int i,j; for (i=0;i<m.x;++i) { puts(""); for (j=0;j<m.y;++j) { printf("%d\t",m.array[i][j]); } } puts(""); } int VectorPointMul(int X,int Y,Matrix &m1,Matrix &m2) { int i,sum; sum=0; for (i=0;i<m1.y;++i) { sum+=(m1.array[X][i]*m2.array[i][Y]); } return sum; } bool MulMatrix(Matrix &out,Matrix &m1,Matrix &m2) { int i,j; if (m1.y!=m2.x) { return false; } if (out.x!=m1.x||out.y!=m2.y) { return false; } for (i=0;i<out.x;++i) { for (j=0;j<out.y;++j) { out.array[i][j]=VectorPointMul(i,j,m1,m2); } } return true; } int main(int argc, char* argv[]) { Matrix m1,m2; InitMatrix(m1,1,4); puts("matrix1矩阵内容:"); PrintMatrix(m1); InitMatrix(m2,4,4); puts("matrix2矩阵内容:"); PrintMatrix(m2); Matrix mproduct; InitMatrix(mproduct,m1.x,m2.y,false); if(MulMatrix(mproduct,m1,m2)) { puts("矩阵相乘结果:"); PrintMatrix(mproduct); } else { puts("相乘矩阵非法"); } DestroyMatrix(m1); DestroyMatrix(m2); DestroyMatrix(mproduct); getchar(); return 0; }
相关文章推荐
- 矩阵相乘的两种实现方法
- MapReduce实现矩阵相乘
- 第九周 项目2 对称矩阵压缩存储的实现与应用(相加、相乘)
- Linux下利用多线程实现矩阵相乘的并行计算
- ZED Board从入门到精通系列(八)——Vivado HLS实现矩阵相乘
- 矩阵相乘strassen-c++代码实现及运行实例结果
- 算法系列:矩阵相乘算法的MapReduce实现
- C++实现两个矩阵相乘
- java实现矩阵乘法public class MatrixMultiply { //A=A*B 将相乘的结果赋给A public static void Multiply(double[][
- 矩阵相乘优化算法实现讲解
- opencv 矩阵与一个常数相乘的 两种实现方法
- 矩阵相乘strassen-c++代码实现及运行实例结果
- 【转载】OpenCL实现矩阵相乘
- [置顶] C++实现任意复数、实数、矩阵相乘(要求用重载函数)
- cublasSgemm实现矩阵的相乘
- 矩阵相乘求最少相乘次数的C++实现代码
- Java实现用传统分治法解决矩阵相乘问题
- C语言实现两个矩阵相乘
- 矩阵相乘strassen-c++代码实现及运行实例结果
- CUDA编程接口:共享存储器实现矩阵相乘