基本矩阵运算的Java实现
一: 矩阵的加法与减法
规则:矩阵的加法与减法要求两个矩阵的行列完全相等,方可以完成两个矩阵的之间的运算。
举例说明如下

二:矩阵的乘法
规则:矩阵的乘法要求两个矩阵符合A(mx k), B( k x n)即矩阵A的列数与矩阵B的行数相等,否
则无法完成矩阵运算。举例说明如下:

Java代码如下:
- package pet.shop;
- public class BasicMatrixMath {
- public final static int OPERATION_ADD = 1;
- public final static int OPERATION_SUB = 2;
- public final static int OPERATION_MUL = 4;
- /**
- * To be able to add two matrices, they must be of the same size
- * @param matrixa
- * @param matrixb
- */
- public int[][] add(int[][] matrixa, int[][] matrixb) {
- if(legalOperation(matrixa, matrixb, OPERATION_ADD)) {
- for(int i=0; i<matrixa.length; i++) {
- for(int j=0; j<matrixa[0].length; j++) {
- matrixa[i][j] = matrixa[i][j] + matrixb[i][j];
- }
- }
- }
- return matrixa;
- }
- /**
- * To be able to substract two matrices, they must be of the same size
- *
- * @param matrixa
- * @param matrixb
- */
- public int[][] substract(int[][] matrixa, int[][] matrixb) {
- if(legalOperation(matrixa, matrixb, OPERATION_SUB)) {
- for(int i=0; i<matrixa.length; i++) {
- for(int j=0; j<matrixa[0].length; j++) {
- matrixa[i][j] = matrixa[i][j] - matrixb[i][j];
- }
- }
- }
- return matrixa;
- }
- /**
- *
- * @param matrixa
- * @param matrixb
- */
- public int[][] multiplication(int[][] matrixa, int[][] matrixb) {
- if(legalOperation(matrixa, matrixb, OPERATION_SUB)) {
- int[][] result = new int[matrixa.length][matrixb[0].length];
- for(int i=0; i<matrixa.length; i++) {
- for(int j=0; j<matrixb[0].length; j++) {
- // i will complete this tomorrow @2012/09/17
- result[i][j] = calculateSingleResult(matrixa, matrixb, i, j);
- }
- }
- return result;
- }
- else
- {
- return null;
- }
- }
- private int calculateSingleResult(int[][] matrixa, int[][] matrixb, int row, int col) {
- int result = 0;
- for(int k=0; k<matrixa[0].length; k++) {
- result += matrixa[row][k] * matrixb[k][col];
- }
- return result;
- }
- /**
- *
- * @param matrixa
- * @param b
- */
- public int[][] multiplication(int[][] matrixa, int b) {
- for(int i=0; i<matrixa.length; i++) {
- for(int j=0; j<matrixa[0].length; j++) {
- matrixa[i][j] = matrixa[i][j] * b;
- }
- }
- return matrixa;
- }
- /**
- * validate whether the parameters is valid parameters.
- *
- * @param a
- * @param b
- * @param type
- * @return
- */
- private boolean legalOperation(int[][] a, int[][] b, int type) {
- boolean legal = true;
- if(type == OPERATION_ADD || type == OPERATION_SUB)
- {
- if(a.length != b.length || a[0].length != b[0].length) {
- legal = false;
- }
- }
- else if(type == OPERATION_MUL)
- {
- if(a[0].length != b.length) {
- legal = false;
- }
- }
- return legal;
- }
- /**
- * test code here !!!!
- * @param args
- */
- public static void main(String[] args) {
- int[][] a = new int[][]{{1,2},{3,4}};
- int[][] b = new int[][]{{7, 8}, {6, 5}};
- BasicMatrixMath bmm = new BasicMatrixMath();
- System.out.println("addition two matrix");
- int[][] result = bmm.add(a, b);
- for(int i=0; i<result.length; i++) {
- for(int j=0; j<result[0].length; j++) {
- System.out.print("\t" + result[i][j]);
- }
- System.out.println();
- }
- System.out.println("substract two matrix");
- result = bmm.substract(a, b);
- for(int i=0; i<result.length; i++) {
- for(int j=0; j<result[0].length; j++) {
- System.out.print("\t" + result[i][j]);
- }
- System.out.println();
- }
- System.out.println("multiplex one matrix");
- result = bmm.multiplication(a, 3);
- for(int i=0; i<result.length; i++) {
- for(int j=0; j<result[0].length; j++) {
- System.out.print("\t" + result[i][j]);
- }
- System.out.println();
- }
- System.out.println("multiplex two matrix");
- result = bmm.multiplication(a, b);
- for(int i=0; i<result.length; i++) {
- for(int j=0; j<result[0].length; j++) {
- System.out.print("\t" + result[i][j]);
- }
- System.out.println();
- }
- }
- }
基本矩阵运算的Java实现的更多相关文章
- Java第三方工具库/包汇总
一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库.它是Matlab.Octave.FreeMat.Scilab的一个克隆, ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java调用jama实现矩阵运算
Java调用jama实现矩阵运算 一.jama简介 Jama是一个基本的线性代数java包.包括一个基本的Matrix类和5个矩阵分解类. Matrix类提供了基本的线性代数数值运算的功能,不同的构造 ...
- Java读取mat文件
概述 使用ujmp中的jmatio模块读取.mat文件到java程序中. 其实,ujmp主要是在模块core中实现了矩阵运算,其余模块都是复用了已有的开源库.模块jmatio是复用了已有的JMatIo ...
- JAMA:Java矩阵包
原文链接:JAMA:Java矩阵包 API文档链接:线性代数Java包 JAMA jama是一个非常好用的java的线性代数软件包.适用于日常编程可能碰到的各种矩阵运算问题,提供了一个优雅的简便的解决 ...
- 用java写bp神经网络(一)
根据前篇博文<神经网络之后向传播算法>,现在用java实现一个bp神经网络.矩阵运算采用jblas库,然后逐渐增加功能,支持并行计算,然后支持输入向量调整,最后支持L-BFGS学习算法. ...
- 158个JAVA免豆精品资料汇总
附件完整版下载地址: http://down.51cto.com/data/431561 附件部分预览~ java中国移动收费系统[源代码] http://down.51cto.com/data/70 ...
- 【转】【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录
附件完整版下载地址: http://down.51cto.com/data/431561 附件部分预览~ java中国移动收费系统[源代码] http://down.51cto.com/data/70 ...
- JavaSE基础之矩阵运算
JavaSE基础之矩阵运算 1.矩阵类:Matrix.java 包括矩阵的加.乘运算,行列式的求解,最大最小元素等 package cn.com.zfc.help; import java.text. ...
随机推荐
- JavaScript中的方法重载
对js有些了解的人都知道,在js中根本就不存在像C#中的那种方法重载,而有的只是方法的覆盖,当你在js中敲入两个或多个同名的方法的时候,不管方法(函数)的参数个数怎么个不同,这个方法名只能属于最后定义 ...
- 基本shell命令使用笔记
linux常用命令: (ls:列出目录内容) -a/-all 列出所有文件,包括隐藏文件 -l 使用长格式显示详细信息,包括rwx (mkdir:建立目录) -p/-parents 若要建立目录的上层 ...
- ajax post 请求415\ 400 错误
今天用ajax 向后台发送 post请求时,出现了两个问题: 1, 发送请求后,控制台 返回 Unsupported media type-415(不支持的媒体类型),这时突然想起来,post 请求 ...
- Python unittest appium
import unittest from appium import webdriver from appium.common.exceptions import NoSuchContextExcep ...
- 十天精通CSS3学习笔记 part3
第8章 CSS3中的变形与动画(上) 变形--旋转 rotate() 旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转.它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度. ...
- 在Emacs 24.4中使用在线字典
使用Emacs时经常需要查英语字典怎么办?切到浏览器查?太慢.我想到一个高效的解决方案,利用新发布的Emacs 24.4中的Web浏览器eww,在Emacs中集成一个在线字典,查询光标处的字,一键搞定 ...
- js中转移符
"<a href='javascript:;' onclick='javascript:changeChannelRuleStatus(\"" + options. ...
- 读javascript高级程序设计00-目录
javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/>本笔记是为了方便日后查阅,仅作学习交流 ...
- 基于事件的异步模式(EAP)
什么是EAP异步编程模式 EAP基于事件的异步模式是.net 2.0提出来的,实现了基于事件的异步模式的类将具有一个或者多个以Async为后缀的方法和对应的Completed事件,并且这些类都支持异步 ...
- Get Script Path in Shell
#!/usr/bin/bashdir_old=$(pwd)absolute_script_path=$(cd $(dirname $0) && pwd)relative_script_ ...