基本矩阵运算的Java实现

分类: 图像处理2012-09-18 10:36 2537人阅读 评论(3) 收藏 举报
javamatrixparametersstringclassnull

一: 矩阵的加法与减法

规则:矩阵的加法与减法要求两个矩阵的行列完全相等,方可以完成两个矩阵的之间的运算。

举例说明如下

二:矩阵的乘法

规则:矩阵的乘法要求两个矩阵符合A(mx k),  B( k x n)即矩阵A的列数与矩阵B的行数相等,否

则无法完成矩阵运算。举例说明如下:

Java代码如下:

[java] view plaincopy
  1. package pet.shop;
  2. public class BasicMatrixMath {
  3. public final static int OPERATION_ADD = 1;
  4. public final static int OPERATION_SUB = 2;
  5. public final static int OPERATION_MUL = 4;
  6. /**
  7. * To be able to add two matrices, they must be of the same size
  8. * @param matrixa
  9. * @param matrixb
  10. */
  11. public int[][] add(int[][] matrixa, int[][] matrixb) {
  12. if(legalOperation(matrixa, matrixb, OPERATION_ADD)) {
  13. for(int i=0; i<matrixa.length; i++) {
  14. for(int j=0; j<matrixa[0].length; j++) {
  15. matrixa[i][j] = matrixa[i][j] + matrixb[i][j];
  16. }
  17. }
  18. }
  19. return matrixa;
  20. }
  21. /**
  22. * To be able to substract two matrices, they must be of the same size
  23. *
  24. * @param matrixa
  25. * @param matrixb
  26. */
  27. public int[][] substract(int[][] matrixa, int[][] matrixb) {
  28. if(legalOperation(matrixa, matrixb, OPERATION_SUB)) {
  29. for(int i=0; i<matrixa.length; i++) {
  30. for(int j=0; j<matrixa[0].length; j++) {
  31. matrixa[i][j] = matrixa[i][j] - matrixb[i][j];
  32. }
  33. }
  34. }
  35. return matrixa;
  36. }
  37. /**
  38. *
  39. * @param matrixa
  40. * @param matrixb
  41. */
  42. public int[][] multiplication(int[][] matrixa, int[][] matrixb) {
  43. if(legalOperation(matrixa, matrixb, OPERATION_SUB)) {
  44. int[][] result = new int[matrixa.length][matrixb[0].length];
  45. for(int i=0; i<matrixa.length; i++) {
  46. for(int j=0; j<matrixb[0].length; j++) {
  47. // i will complete this tomorrow @2012/09/17
  48. result[i][j] = calculateSingleResult(matrixa, matrixb, i, j);
  49. }
  50. }
  51. return result;
  52. }
  53. else
  54. {
  55. return null;
  56. }
  57. }
  58. private int calculateSingleResult(int[][] matrixa, int[][] matrixb, int row, int col) {
  59. int result = 0;
  60. for(int k=0; k<matrixa[0].length; k++) {
  61. result += matrixa[row][k] * matrixb[k][col];
  62. }
  63. return result;
  64. }
  65. /**
  66. *
  67. * @param matrixa
  68. * @param b
  69. */
  70. public int[][] multiplication(int[][] matrixa, int b) {
  71. for(int i=0; i<matrixa.length; i++) {
  72. for(int j=0; j<matrixa[0].length; j++) {
  73. matrixa[i][j] = matrixa[i][j] * b;
  74. }
  75. }
  76. return matrixa;
  77. }
  78. /**
  79. * validate whether the parameters is valid parameters.
  80. *
  81. * @param a
  82. * @param b
  83. * @param type
  84. * @return
  85. */
  86. private boolean legalOperation(int[][] a, int[][] b, int type) {
  87. boolean legal = true;
  88. if(type == OPERATION_ADD || type == OPERATION_SUB)
  89. {
  90. if(a.length != b.length || a[0].length != b[0].length) {
  91. legal = false;
  92. }
  93. }
  94. else if(type == OPERATION_MUL)
  95. {
  96. if(a[0].length != b.length) {
  97. legal = false;
  98. }
  99. }
  100. return legal;
  101. }
  102. /**
  103. *  test code here !!!!
  104. * @param args
  105. */
  106. public static void main(String[] args) {
  107. int[][] a = new int[][]{{1,2},{3,4}};
  108. int[][] b = new int[][]{{7, 8}, {6, 5}};
  109. BasicMatrixMath bmm = new BasicMatrixMath();
  110. System.out.println("addition two matrix");
  111. int[][] result = bmm.add(a, b);
  112. for(int i=0; i<result.length; i++) {
  113. for(int j=0; j<result[0].length; j++) {
  114. System.out.print("\t" + result[i][j]);
  115. }
  116. System.out.println();
  117. }
  118. System.out.println("substract two matrix");
  119. result = bmm.substract(a, b);
  120. for(int i=0; i<result.length; i++) {
  121. for(int j=0; j<result[0].length; j++) {
  122. System.out.print("\t" + result[i][j]);
  123. }
  124. System.out.println();
  125. }
  126. System.out.println("multiplex one matrix");
  127. result = bmm.multiplication(a, 3);
  128. for(int i=0; i<result.length; i++) {
  129. for(int j=0; j<result[0].length; j++) {
  130. System.out.print("\t" + result[i][j]);
  131. }
  132. System.out.println();
  133. }
  134. System.out.println("multiplex two matrix");
  135. result = bmm.multiplication(a, b);
  136. for(int i=0; i<result.length; i++) {
  137. for(int j=0; j<result[0].length; j++) {
  138. System.out.print("\t" + result[i][j]);
  139. }
  140. System.out.println();
  141. }
  142. }
  143. }

转载于:https://www.cnblogs.com/jamesf/p/4751601.html

基本矩阵运算的Java实现相关推荐

  1. java实现基金浮动_Java: 实现自回归分析/线性回归分析/基金各项指标计算等

    版权声明:本文为博主原创文章,未经博主允许不得转载. 需Jama矩阵运算库. java版源码: 包含自回归分析/线性回归分析/基金各项指标计算 import Jama.Matrix; public c ...

  2. java智能算法--机器学习包

    参考:https://www.cnblogs.com/jpfss/p/9262907.html 一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算 ...

  3. Java第三方工具库/包汇总

    一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库.它是Matlab.Octave.FreeMat.Scilab的一个克隆, ...

  4. java jama包_Java调用Jama包完成矩阵运算

    Java开发机器学习算法的时候,经常用到矩阵运算,我们可以调用Jama包来完成矩阵运算. Jama包下载地址:https://dl.pandaidea.com/jarfiles/j/Jama/Jama ...

  5. [025]Java矩阵运算——jama

    Java矩阵包 背景 jama是一个基本的线性代数java包,它提供了实数非稀疏矩阵类,程序员可构造操控这些类.对于经常使用到矩阵运算的码农来说,即使不精通线性代数也没有关系,因为jama包提供的功能 ...

  6. Java中矩阵运算(math3的使用)

    math3简介 math3中的矩阵操作 演示结果 本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 下面是 ...

  7. Java实现矩阵运算——矩阵乘法、矩阵转置、自动填充矩阵行

    在做大数据或人工智能开发的过程做难免会遇到矩阵运算,本文在这里给大家实现一个简单的矩阵运算,请看下代码: package test;/*** 矩阵运算* * @author Administrator ...

  8. Java中矩阵运算Array2DRowRealMatrix(math3的使用)

    一:简介 math3是Apache下的一款进行数学计算的一款java开源工具.jar包名称为:commons-math3-3.6.1.jar.         大家可以通过maven或者其他网站进行下 ...

  9. java jama_Java调用jama实现矩阵运算

    一.jama简介 Jama是一个基本的线性代数Java包.包括一个基本的Matrix类和5个矩阵分解类. Matrix类提供了基本的线性代数数值运算的功能,不同的构造函数可以构造双精度和浮点精度的二维 ...

最新文章

  1. 数据恢复knowledge
  2. 白血病孕妇产子继母子双双安然
  3. 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm
  4. C++容器的insert()函数有以下三种用法: 最终*it=val;
  5. P4495-[HAOI2018]奇怪的背包【数论,dp】
  6. Qt学习之Qt基础入门(中)
  7. 2017年最喜欢的Visual Studio代码扩展
  8. 没有在该机执行windows脚本宿主的权限_解决办法
  9. 450g吐司烘烤温度_这不可能是吐司!不,是的
  10. 2021年中国船用燃气发动机市场趋势报告、技术动态创新及2027年市场预测
  11. Google Chrome,另类的邪恶垄断?
  12. 洛谷——P2393 yyy loves Maths II
  13. 2021-01-22 LR照片处理逻辑及曝光调整中的基本审美
  14. 洛谷—— P1018 乘积最大
  15. 色谱计算机常用英文,【分享】色谱常用中英文单词
  16. 北京信息科技大学计算机科学与技术研究生,2020年北京信息科技大学计算机科学与技术考研经验分享...
  17. 水库欧神评论雄安新区房产:999年358天
  18. python语义分割数据标签,将数字标签转彩色标签
  19. Java项目在Linux环境使用aspose把word转pdf乱码问题
  20. 微信小程序 重新刷新页面

热门文章

  1. Python学习1——Python中的 split() 函数
  2. java代理通俗简单解析
  3. 【VBA】多条件去重
  4. iis6 配置python CGI
  5. 部署和调优 3.4 腾讯企业邮箱免费版 未完
  6. CentOS 更改MySQL数据库目录位置
  7. vim下php文件中自动缩排html代码
  8. 周至四中计算机老师,周至县第四中学顺利承办周至县 “教育信息化技术与教学课堂深度融合交流研讨会”...
  9. 矢量合成和分解的法则_力的合成与分解
  10. Centos7安装SVN+HTTP