Java 矩阵乘法

127 篇文章 0 订阅
111 篇文章 0 订阅
package com.xiuye.util.algorithm.basics;

import com.xiuye.util.X;

import java.util.Random;

public class Matrix {
    /**
     * A[i][s] * B[s][j] = c[i][j]
     * @param a
     * @param b
     * @return
     */
    public static int[][] dot(int a[][],int b[][]){
        /**
         * i,s * s,j
         */
        int [][]c = new int[a.length][b[0].length];
        for(int i=0;i<a.length;i++){
            for(int j=0;j<b[0].length;j++){
                for(int k=0;k<a[i].length;k++){
                    c[i][j] += a[i][k] * b[k][j];
                }
            }
        }
        return c;
    }

    public static void main(String[] args) {
        int [][]a = new int[10][8];
        int [][]b = new int[8][20];
        Random random = new Random();
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                a[i][j] = random.nextInt(10);
            }
        }
        for(int i=0;i<b.length;i++){
            for(int j=0;j<b[i].length;j++){
                b[i][j] = random.nextInt(10);
            }
        }
        X.lg("a=");
        X.lg("[");
        for(int i=0;i<a.length;i++){
            X.print("\t\t");
            for(int j=0;j<a[i].length;j++){
                X.print(a[i][j],"");
            }
            X.lg();
        }
        X.lg("]");
        X.lg("b=");
        X.lg("[");
        for(int i=0;i<b.length;i++){
            X.print("\t\t");
            for(int j=0;j<b[i].length;j++){
                X.print(b[i][j],"");
            }
            X.lg();
        }
        X.lg("]");

        int [][]c = dot(a,b);
        X.lg("c=");
        X.lg("[");
        for(int i=0;i<c.length;i++){
            X.print("\t\t");
            for(int j=0;j<c[i].length;j++){
                X.print(c[i][j],"");
            }
            X.lg();
        }
        X.lg("]");


    }
}

a=
[
		1 6 4 6 4 0 3 9 
		6 3 6 4 1 9 9 1 
		6 1 5 8 9 2 5 9 
		0 7 5 1 0 4 2 4 
		5 5 2 9 6 9 4 4 
		7 2 1 6 6 5 2 9 
		9 3 7 2 2 7 5 1 
		7 9 9 5 2 7 2 9 
		4 2 2 1 7 8 1 6 
		4 4 4 3 2 0 0 4 
]
b=
[
		8 2 4 4 0 3 3 6 1 5 7 8 4 7 0 8 7 9 1 3 
		2 1 3 5 1 1 7 3 0 8 9 6 1 4 5 8 4 1 6 2 
		2 2 8 7 0 6 4 6 0 3 9 0 6 0 0 3 6 6 6 8 
		1 5 5 1 7 3 0 5 8 0 2 3 1 9 4 2 4 7 0 7 
		0 3 8 6 4 3 4 5 0 7 5 9 8 0 5 7 2 2 4 2 
		1 3 2 2 0 7 7 8 7 8 3 3 1 3 4 4 3 2 8 9 
		3 3 0 5 0 3 0 9 4 1 4 3 5 2 5 0 6 8 0 0 
		9 9 8 7 7 0 9 3 8 6 7 7 0 1 9 2 6 5 4 8 
]
c=
[
		124 148 188 170 127 72 158 152 133 150 204 170 87 100 170 126 159 158 113 169 
		115 113 135 161 42 162 139 262 145 166 206 148 129 136 126 143 195 218 140 191 
		166 192 255 218 156 129 176 242 176 191 246 243 162 143 196 176 216 248 130 224 
		71 76 106 117 42 74 133 118 76 129 158 91 52 57 101 97 110 88 120 129 
		120 157 194 170 120 152 181 252 188 213 217 218 123 175 183 190 190 207 159 229 
		160 168 202 170 131 106 179 199 170 192 204 224 105 139 175 167 180 196 125 204 
		125 96 149 160 32 148 142 229 102 171 215 157 131 125 95 165 186 203 137 178 
		191 180 254 240 115 160 258 259 176 260 323 233 129 164 194 225 250 240 215 285 
		106 121 163 146 79 109 172 173 120 192 171 179 100 77 140 149 132 125 144 173 
		87 77 123 107 61 55 100 97 60 102 144 111 63 75 78 104 108 109 76 109 
]


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值