生活随笔
收集整理的這篇文章主要介紹了
基本矩阵运算的Java实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本矩陣運算的Java實現
分類:?圖像處理2012-09-18 10:36?
2537人閱讀??
收藏?
舉報 javamatrixparametersstringclassnull
一: 矩陣的加法與減法
規則:矩陣的加法與減法要求兩個矩陣的行列完全相等,方可以完成兩個矩陣的之間的運算。
舉例說明如下
二:矩陣的乘法
規則:矩陣的乘法要求兩個矩陣符合A(mx k),? B( k x n)即矩陣A的列數與矩陣B的行數相等,否
則無法完成矩陣運算。舉例說明如下:
Java代碼如下:
[java]?view plaincopy
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;?? ?????? ????? ? ? ? ?? ????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;?? ????}?? ?????? ????? ? ? ? ? ?? ????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;?? ????}?? ?????? ????? ? ? ? ?? ????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++)?{?? ?????????????????????? ????????????????????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;?? ????}?? ?? ????? ? ? ? ?? ????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;?? ????}?? ?????? ????? ? ? ? ? ? ? ?? ????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;?? ????}?? ?????? ????? ? ? ?? ????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();?? ????????}????? ????}?? }??
轉載于:https://www.cnblogs.com/jamesf/p/4751601.html
總結
以上是生活随笔為你收集整理的基本矩阵运算的Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。