zoukankan      html  css  js  c++  java
  • 实现两个N*N矩阵的乘法,矩阵由一维数组表示

    实现两个N*N矩阵的乘法,矩阵由一维数组表示。

    先介绍一下矩阵的加法:

    复制代码
    1     void Add(int rows, int cols)  
    2     {  
    3        for(int i= 0;i<rows;i++)  
    4        {  
    5        for(int j=0;j<cols;j++)  
    6           result[i][j]=mat1[i][j]+mat2[i][j];  
    7        }  
    8     } 
    复制代码

    若两个矩阵要做乘法运:只有在一个矩阵的行数与另一个矩阵的列数相同时,才能做两个矩阵的乘法。

    如何得到矩阵的转置

    矩阵的转置也是一个矩阵,原始矩阵中的行转变为转置矩阵的列。例如,有下述一个3×3矩阵:

    1 2 3
    6 7 8
    4 5 9

    那么它的转置矩阵为:

    1 6 4
    2 7 5
    3 8 9

    让我们从程序员的角度仔细地考察一下这一现象。假设原始数组为M,转置矩阵为MT。那么M[1][0]=6,在转置矩阵中我们发现MT [0][1]=6。因此,我们能够得到程序化的结论:转置一个矩阵实际上就是对换下标变量。用技术术语讲:

    1. MT[Row][Column] = M[Column][Row]; 

    下面是得到转置矩阵的C代码:

    1. void show_transpose(float mat[][10],int row,int col)    
    2. {    
    3.    int i,j;    
    4.    for(i=0;i<row;i++)    
    5.    {    
    6.       for(j=0;j<col;j++)    
    7.          printf("%f ",mat[j][i]);    
    8.       printf(" ");    
    9.    }    
    10. }   


    以上方法显示了矩阵的转置。

      1. #include<iostream>  
      2. using namespace std;  
      3. #define size 2  
      4.   
      5. int multi(int *a , int *b , int N)  
      6. {  
      7.     int i , j , k , temp;  
      8.     int *c = (int*)malloc(N * N * sizeof(int));  
      9.   
      10.     for(i = 0 ; i < N ; i++)  
      11.     {  
      12.         for(j = 0 ; j < N ; j++)  
      13.         {  
      14.             temp = i * N + j;  
      15.             *(c + temp) = 0;  
      16.             for(k = 0 ; k < N ; k++)  
      17.             {  
      18.                 *(c + temp) += a[i * N + k] * b[k * N + j];  
      19.             }  
      20.             cout<<*(c + temp)<<" ";  
      21.         }  
      22.     }  
      23.     return *c;  
      24. }  
      25.   
      26. int main()  
      27. {  
      28.     int a[size * size] = {2 , 1 , 4 , 3};  
      29.     int b[size * size] = {1 , -1 , 3 , 2};  
      30.     multi(a , b , size);  
      31.   
      32.     return 0;  

  • 相关阅读:
    java操作生成jar包 和写入jar包
    jboss配置jndi连接池
    windows 域的LDAP查询相关举例
    LDAP error Code 及解决方法
    HDU 6417
    CF1299D Around the World
    codechef Chef and The Colored Grid
    Educational Codeforces Round 82 (Rated for Div. 2)
    CF1237F Balanced Domino Placements
    CF1254E Send Tree to Charlie
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3185648.html
Copyright © 2011-2022 走看看