如何在c中乘以不同大小的矩阵

时间:2011-03-05 14:44:05

标签: matrix matrix-multiplication multiplying

我正在寻找一种将2x1和2x2矩阵相乘的方法,但我的代码几乎不是每次都能工作,即使它确实有效,我也必须将数字放入代码中。如果我在运行代码时尝试询问数字

,它就不会工作

到目前为止,这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)  
{  
  unsigned int a[1][2],b[2][2],c[2][1], i=0, j=0, k=0;  
  printf("-=Program to Multiply two Matrices=-");  


//--------------------------------------------------------------------  

 printf("\nEnter the values of Matrix A: \n");  

  for(i=0;i<1;i++)  
    {  
      for(j=0;j<2;j++)  
        {  
         // printf("\n"); 
          scanf("%d",&a[i][j]);  
        }  
     }  
   printf("\nMatrix A: ");  
   for(i=0;i<1;i++)  
    {  
      printf("\n");  
      for(j=0;j<2;j++)  
        {  
          printf(" ");  
          printf("%d",a[i][j]);  
        }  
     }  
//----------------------------------------------------  

printf("\nEnter the values of Matrix B: \n");  
  for(i=0;i<2;i++)  
    {  
      for(j=0;j<2;j++)  
        {  
         // printf("\n");  
          scanf("%d",&b[i][j]);  
        }  
     }  
   printf("\nMatrix B: ");  
   for(i=0;i<2;i++)  
    {  
      printf("\n");  
      for(j=0;j<2;j++)  
        {  
          printf(" ");  
          printf("%d",b[i][j]);  
        }  
     }  

//--------------------------------------------------------  

  printf("\n\nMultiplication of matrices A and B is : \n\n");  
  for(i=0;i<2;i++)  
   {  
     for(j=0;j<2;j++)  
       {  
          c[i][j]=0;  
          for(k=0;k<1;k++)  
            {  
        c[i][j]=c[i][j]+(a[i][k]*b[k][j]);  
            }  
       }  
   }  
  printf("\nMatrix C (Resultant Matrix): ");  
    for(i=0;i<2;i++)  
    {  
      printf("\n");  
      for(j=0;j<1;j++)  
        {  
          printf(" ");  
          printf("%d",c[i][j]);  
        }  
     }  
printf("\n");  
  return 0;  
}  

2 个答案:

答案 0 :(得分:1)

矩阵乘法的基本概念第一矩阵列必须等于第二矩阵的行

示例:

  

//有效,因为A的列等于B的行,即2

     

矩阵A = 1 X 2
  矩阵B = 2 X 2

     

//无效(你的情况)
  矩阵A = 2 X 1
  矩阵B = 2 X 2

Matrix Multiplication image

答案 1 :(得分:0)

只要涉及矩阵乘法,只有当第一个矩阵的列数与第二个矩阵中的行数匹配时才有可能,因此没有使用这样做并且整个概念是错误的