矩阵乘法运算-JAVA实现

本文介绍了如何使用JAVA编程语言实现矩阵乘法运算,通过详细展示代码实例来阐述矩阵乘法的具体实现过程。
摘要由CSDN通过智能技术生成

用JAVA写了个矩阵乘法运算.没什么好解释的.直接贴代码吧.


public class Matrix {
	int row;
	int col;
	private int[][] array;
	
	private Matrix(){
		//构造函数私有化,使用setArray方法进行初始化
	}
	
	public int[][] getArray() {
		return array;
	}

	public void setArray(int[][] array) {
		//判断   二维数组是否为合法矩阵
		int row = array.length;
		int col = array[0].length;
		for(int i = 1;i < row;i++){
			if(col!=array[i].length){
				System.out.println("输入的不是一个矩阵,请重新输入");
				return;
			}
		}
		this.row = row;
		this.col = col;
		this.array = array;
	}
	
	public String toString(){
		if(array==null){
			return "矩阵为空,请输入一个矩阵";
		}
		String s ="";
		row = array.length;
		col = array[row-1].length;
		
		for(int i = 0;i < row;i++){
			for(int j = 0;j < col;j++){
				s+=array[i][j]+" ";
			}
			s+="\r\n";
		}
			
		return s;
	}
	pub
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java 中,可以通过多线程实现并行执行矩阵乘法运算。具体实现步骤如下: 1. 定义两个矩阵 A 和 B,以及结果矩阵 C。 2. 将矩阵 A 和 B 按照一定的规则分割成多个子矩阵。例如,可以将矩阵 A 按行分割成多个子矩阵,将矩阵 B 按列分割成多个子矩阵。 3. 定义一个线程池,使用多个线程同时计算子矩阵的乘积,并将结果存储到结果矩阵 C 中。可以使用 Java 的 Executor 框架来实现线程池。 4. 等待所有线程执行完毕,合并结果矩阵 C 中的所有子矩阵,得到最终的结果矩阵。 下面是一个简单的示例代码,其中假设矩阵 A 和矩阵 B 都是 1000x1000 的矩阵: ```java import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class MatrixMultiplication { public static void main(String[] args) throws InterruptedException { int[][] A = new int[1000][1000]; int[][] B = new int[1000][1000]; int[][] C = new int[1000][1000]; // 初始化矩阵 A 和 B int numThreads = Runtime.getRuntime().availableProcessors(); ExecutorService pool = Executors.newFixedThreadPool(numThreads); int blockSize = 100; // 每个子矩阵的大小 // 将矩阵 A 和 B 分割成多个子矩阵,分别计算乘积 for (int i = 0; i < 1000; i += blockSize) { for (int j = 0; j < 1000; j += blockSize) { pool.execute(new MatrixMultiplicationTask(A, B, C, i, j, blockSize)); } } pool.shutdown(); pool.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); // 合并子矩阵的结果,得到最终的结果矩阵 C // ... } } class MatrixMultiplicationTask implements Runnable { private int[][] A; private int[][] B; private int[][] C; private int startRow; private int startCol; private int blockSize; public MatrixMultiplicationTask(int[][] A, int[][] B, int[][] C, int startRow, int startCol, int blockSize) { this.A = A; this.B = B; this.C = C; this.startRow = startRow; this.startCol = startCol; this.blockSize = blockSize; } @Override public void run() { for (int i = startRow; i < startRow + blockSize; i++) { for (int j = startCol; j < startCol + blockSize; j++) { int sum = 0; for (int k = 0; k < A[0].length; k++) { sum += A[i][k] * B[k][j]; } C[i][j] = sum; } } } } ``` 在这个示例代码中,我们首先初始化了矩阵 A 和 B,然后使用线程池计算每个子矩阵的乘积。在 MatrixMultiplicationTask 类中,实现了每个子矩阵的乘积计算逻辑。最后,我们等待所有线程执行完毕,然后合并结果矩阵 C 中的所有子矩阵,得到最终的结果矩阵。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值