【问题标题】:How to multiply two matrices with only one loop in Java?如何在Java中将两个矩阵相乘只有一个循环?
【发布时间】:2015-09-26 12:45:46
【问题描述】:

这是我发现的使用 3 个“for”循环的传统方法。

    public int [][] multiMatrices(int[][] m1, int [][] m2){

    int fil_m1 = m1.length;
    int col_m1 = m1[0].length;

//  int fil_m2 = m2.length;     //NOT NECESSARY
    int col_m2 = m2[0].length;

    int [][] end = new int [fil_m1][col_m2];

    for (int x=0; x < end.length; x++) {
         for (int y=0; y < end[x].length; y++) {
            for (int z=0; z<col_m1; z++) {
              end[x][y] += m1[x][z]*m2[z][y]; 
            }
         }
    }
    return end;
}

我现在正试图获得相同的结果,但目标是只使用一个“for”。为了练习,我不能使用任何外部库。我发现了一种叫做 Strassen 算法的东西,它可能有用,也可能没用。

任何帮助将不胜感激。

【问题讨论】:

    标签: java matrix matrix-multiplication


    【解决方案1】:
     for (int x=0,y=0,z=0; x < end.length ; z++) {
    
                  if(z==col_m1) {z=0;y++;}                
                  if(y==end[x].length){y=0;x++;}
                  end[x][y] += m1[x][z]*m2[z][y]; 
             }
        }
    

    【讨论】:

    • 这里的end.length 是矩阵中元素的总数吧?
    • end[x].length 是一维元素的数量,end.length 必须是二维的。所以,是的。
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 2012-04-30
    • 2020-07-18
    • 1970-01-01
    • 2015-07-28
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多