weixin_41997508
2021-03-21 09:55
采纳率: 25%
浏览 117
已采纳

Java实现以下算法

(1)生成一个d∗L维矩阵(2)矩阵乘法(3)主要计算矩阵H的Moore-Penrose广义逆,它可以通过矩阵H与其转置矩阵HT相乘

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • piaoyiren 2021-03-21 10:25
    已采纳

    package juzhen;

    import java.util.Random;
    //1)生成一个d∗L维矩阵(2)矩阵乘法(3)主要计算矩阵H的Moore-Penrose广义逆,它可以通过矩阵H与其转置矩阵HT相乘


    public class JuZhen {
        public static Integer[][] getJuZhen(int d,int l){
            Integer results[][]=new Integer[d][l];
            Random random=new Random();
            for(int i=0;i<d;i++) {
                for(int j=0;j<l;j++) {
                    results[i][j]=random.nextInt(100);
                    System.out.print(results[i][j]+"    ");
                }
                System.out.println();
            }
            return results;
        }
        
        public static Integer[][] chengMethod(Integer[][] first,Integer[][] second){//求矩阵乘法
            int firstD=first.length;
            int firstL=first[0].length;
            int secondD=second.length;
            int secondL=second[0].length;
            Integer results[][]=new Integer[firstD][secondL];
            Integer firstLv[]=null;
            Integer secondDv=0;
            int j=0,m=0;
            int i=0,n=0,count=0;
            int temp=0;
                for(;i<firstD;) {
                    firstLv=first[i];
                    for(n=0;n<secondD;n++) {
                        secondDv=second[n][m];
                        temp+=firstLv[n]*secondDv;                    
                    }
                    results[i][m]=temp;
                    temp=0;
                    System.out.println(results[i][m]);
                    m++;
                    if(m==secondL) {
                        m=0;
                        i++;
                    }
                }
            return results;
        }
        public static Integer[][] zhuanzhi(Integer[][] juzhen){
            Integer m=juzhen.length;
            Integer n=juzhen[0].length;
            Integer results[][]=new Integer[n][m];
    //        for(int i=0;i<m;i++) {
    //            for(int j=0;j<n;j++) {
    //                System.out.print(juzhen[i][j] +"   ");
    //            }
    //            System.out.println();
    //        }
    //        System.out.println("-----------------------------");
            for(int i=0;i<n;i++) {
                for(int j=0;j<m;j++) {
                    results[i][j]=juzhen[j][i];
                    System.out.print(results[i][j]+"    ");
                }
                System.out.println();
            }
            return results;
        }
        public static void main(String[] args) {
            Integer first[][]= {{2,3,4},{3,4,5}};
            Integer second[][]= {{4,7},{5,3},{2,3}};
    //        chengMethod(first,second);
            Integer hInteger[][]=getJuZhen(3, 4);
            Integer results[][]=zhuanzhi(hInteger);
            chengMethod(hInteger, results);
    //        getJuZhen(3, 4);
        }
    }
     

    点赞 打赏 评论

相关推荐 更多相似问题