二维矩阵实现矩阵相乘

本文详细介绍了如何使用Python的NumPy库高效地实现两个矩阵的相乘操作,包括基本概念、步骤和实例演示。通过理解矩阵乘法规则和NumPy的便捷函数,读者可以轻松掌握这一重要的数值计算技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. using namespace std;
  6. #define M 1024
  7. #define N 1024
  8. #define P 512
  9. //void mulMatri(int A[M][P],int B[P][N],int C[M][N],int m,int n,int p);
  10. inline void mulMatri(float** A,float** B,float** C,int m,int n,int p);
  11. int main()
  12. {
  13. int i,j;
  14. float** A,**B,**C;
  15. A=(float**)malloc(M*sizeof(float *));
  16. B=(float**)malloc(P*sizeof(float *));
  17. C=(float**)malloc(M*sizeof(float *));
  18. for(i=0;i<M;i++)
  19. A[i]=(float*)malloc(P*sizeof(float));
  20. for(i=0;i<P;i++)
  21. B[i]=(float*)malloc(N*sizeof(float));
  22. for(i=0;i<M;i++)
  23. C[i]=(float*)malloc(N*sizeof(float));
  24. //int A[M][P],B[P][N],C[M][N];
  25. for(i=0;i<M;i++)
  26. for(j=0;j<P;j++)
  27. A[i][j]=rand()%10;
  28. for(i=0;i<P;i++)
  29. for(j=0;j<N;j++)
  30. B[i][j]=rand()%10;
  31. clock_t start,finish;
  32. start=clock();
  33. mulMatri( A,B,C,M,N,P);
  34. finish=clock();
  35. printf("%f ms\n",(float)(finish-start));
  36. system("pause");
  37. for(i=0;i<M;i++){
  38. for(j=0;j<P;j++)
  39. cout<<A[i][j]<<" ";
  40. cout<<endl;
  41. }
  42. for(i=0;i<P;i++){
  43. for(j=0;j<N;j++)
  44. cout<<B[i][j]<<" ";
  45. cout<<endl;
  46. }
  47. for(i=0;i<M;i++){
  48. for(j=0;j<N;j++)
  49. cout<<C[i][j]<<" ";
  50. cout<<endl;
  51. }
  52. for(i=0;i<M;i++)
  53. free(A[i]);
  54. for(i=0;i<P;i++)
  55. free(B[i]);
  56. for(i=0;i<M;i++)
  57. free(C[i]);
  58. free(A);
  59. free(B);
  60. free(C);
  61. return 0;
  62. }
  63. //void mulMatri(int A[M][P],int B[P][N],int C[M][N],int m,int n,int p)
  64. inline void mulMatri(float** A,float** B,float** C,int m,int n,int p)
  65. {
  66. int i,j,k;
  67. for(i=0;i<m;i++)
  68. for(j=0;j<n;j++){
  69. C[i][j]=0;
  70. for(k=0;k<p;k++)
  71. C[i][j]+=A[i][k]*B[k][j];
  72. }
  73. }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值