您的位置:首页 > 其它

二维矩阵实现矩阵相乘

2016-10-10 20:54 274 查看
#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

using namespace std;


#define M 1024

#define N 1024

#define P 512


//void mulMatri(int A[M][P],int B[P]
,int C[M]
,int m,int n,int p);

inline void mulMatri(float** A,float** B,float** C,int m,int n,int p);

int main()


{


int i,j;

float** A,**B,**C;

A=(float**)malloc(M*sizeof(float *));

B=(float**)malloc(P*sizeof(float *));

C=(float**)malloc(M*sizeof(float *));

for(i=0;i<M;i++)

A[i]=(float*)malloc(P*sizeof(float));

for(i=0;i<P;i++)

B[i]=(float*)malloc(N*sizeof(float));

for(i=0;i<M;i++)

C[i]=(float*)malloc(N*sizeof(float));

//int A[M][P],B[P]
,C[M]
;


for(i=0;i<M;i++)

for(j=0;j<P;j++)

A[i][j]=rand()%10;


for(i=0;i<P;i++)

for(j=0;j<N;j++)

B[i][j]=rand()%10;


clock_t start,finish;

start=clock();

mulMatri( A,B,C,M,N,P);

finish=clock();

printf("%f ms\n",(float)(finish-start));

system("pause");

for(i=0;i<M;i++){

for(j=0;j<P;j++)

cout<<A[i][j]<<" ";

cout<<endl;


}

for(i=0;i<P;i++){

for(j=0;j<N;j++)

cout<<B[i][j]<<" ";

cout<<endl;


}

for(i=0;i<M;i++){

for(j=0;j<N;j++)

cout<<C[i][j]<<" ";

cout<<endl;


}

for(i=0;i<M;i++)

free(A[i]);

for(i=0;i<P;i++)

free(B[i]);

for(i=0;i<M;i++)

free(C[i]);

free(A);

free(B);

free(C);

return 0;


}


//void mulMatri(int A[M][P],int B[P]
,int C[M]
,int m,int n,int p)

inline void mulMatri(float** A,float** B,float** C,int m,int n,int p)

{


int i,j,k;


for(i=0;i<m;i++)


for(j=0;j<n;j++){


C[i][j]=0;


for(k=0;k<p;k++)


C[i][j]+=A[i][k]*B[k][j];


 }


}


来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: