Java實(shí)現(xiàn)的矩陣乘法示例
本文實(shí)例講述了Java實(shí)現(xiàn)的矩陣乘法。分享給大家供大家參考,具體如下:
思路:
矩陣乘法的前提是:前一矩陣的行數(shù) == 后一矩陣的列數(shù)(rows == cols)
在滿足前提的情況下:前一矩陣的第一行 與 第二個(gè)矩陣的第一列 逐個(gè)相乘。將乘積求和 作為 結(jié)果矩陣的第一個(gè)元素
類推刻得到:結(jié)果矩陣的 第 [row][col] 個(gè)元素 = 前一矩陣的第 row 行 與 后一矩陣的 col列上的元素 逐一相乘 后的乘積之和
代碼及解析:
一、算法剖析:
1.設(shè)置兩個(gè)for循環(huán)用來控制結(jié)果(輸出)矩陣的 待賦值元素位置 (即 matrix[i][j] )
2.在這兩個(gè)循環(huán)環(huán)中再嵌套上一個(gè)循環(huán) 這個(gè)循環(huán)起到關(guān)鍵作用 它用來控制 前一矩陣第 i 行元素的列數(shù) 以及 后一矩陣 第 j 列的行數(shù)

二、算法代碼:
/*
* 計(jì)算兩個(gè)矩陣相乘的方法
*/
public Matrix mutiply(Matrix m){
Matrix result = new Matrix(this.getRows(), m.getCols());
for (int i = 0 ; i < this.getRows() ; i++ ){
for(int j = 0 ; j < m.getCols() ; j++ ){//正好為矩陣大小,保證了每個(gè)元素都被賦值
for (int num = 0 ; num < this.getCols() ; num++){
result.setData(i, j, this.getData(i, num) * m.getData(num, j));
}
}
}
return result;
}
注:具體進(jìn)行計(jì)算時(shí),由于可能出現(xiàn) 前一矩陣行數(shù) 不等于 后一矩陣列數(shù)等異常情況
需要進(jìn)行異常處理,這里為了保證算法過程的清晰性暫不加上,希望讀者在具體使用中及時(shí)添加。
源碼即測(cè)試范例:
public class MatrixTest {
public static void main(String[] args) {
//矩陣測(cè)試范例
//僅為輸入?yún)⒖?無實(shí)際作用
double [][]array01 = {
{1, 2, 3},
{4, 5, 6}
};
double [][]array02 = {
{1, 4},
{2, 5},
{3, 6}
};
double [][] resultMatrix = new double[array01.length][array02[0].length];
for (int i = 0 ; i < resultMatrix.length ; i++ ){
for(int j = 0 ; j < resultMatrix[0].length ; j++ ){//正好為矩陣大小,保證了每個(gè)元素都被賦值
for (int num = 0 ; num < array02.length ; num++){
resultMatrix[i][j] = resultMatrix[i][j] + array01[i][num]*array02[num][j];
}
}
}
for (int i = 0 ; i < resultMatrix.length ; i++ ){
for(int j = 0 ; j < resultMatrix[0].length ; j++ ){//正好為矩陣大小,保證了每個(gè)元素都被賦值
System.err.print(resultMatrix[i][j] + "\t");
}
System.out.println();
}
}
}
輸出范例:
9.0 18.0
18.0 36.0
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- java 二維數(shù)組矩陣乘法的實(shí)現(xiàn)方法
- Java矩陣連乘問題(動(dòng)態(tài)規(guī)劃)算法實(shí)例分析
- Java實(shí)現(xiàn)的求逆矩陣算法示例
- Java實(shí)現(xiàn)輸出回環(huán)數(shù)(螺旋矩陣)的方法示例
- Java實(shí)現(xiàn)矩陣加減乘除及轉(zhuǎn)制等運(yùn)算功能示例
- java實(shí)現(xiàn)任意矩陣Strassen算法
- Java實(shí)現(xiàn)的按照順時(shí)針或逆時(shí)針方向輸出一個(gè)數(shù)字矩陣功能示例
- Java實(shí)現(xiàn)矩陣順時(shí)針旋轉(zhuǎn)90度的示例
- java實(shí)現(xiàn)的n*n矩陣求值及求逆矩陣算法示例
- 使用java寫的矩陣乘法實(shí)例(Strassen算法)
相關(guān)文章
RocketMQ消息存儲(chǔ)文件的加載與恢復(fù)機(jī)制源碼分析
這篇文章主要介紹了RocketMQ源碼分析之消息存儲(chǔ)文件的加載與恢復(fù)機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
RocketMQ中的消費(fèi)者啟動(dòng)流程解讀
這篇文章主要介紹了RocketMQ中的消費(fèi)者啟動(dòng)流程解讀,RocketMQ是一款高性能、高可靠性的分布式消息中間件,消費(fèi)者是RocketMQ中的重要組成部分,消費(fèi)者負(fù)責(zé)從消息隊(duì)列中獲取消息并進(jìn)行處理,需要的朋友可以參考下2023-10-10
Java構(gòu)造方法實(shí)例詳解(動(dòng)力節(jié)點(diǎn)java學(xué)院整理)
其實(shí)java構(gòu)造方法很簡(jiǎn)單,下面通過示例給大家分享java構(gòu)造方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-04-04
Java class文件格式之?dāng)?shù)據(jù)類型(二)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java class文件格式之?dāng)?shù)據(jù)類型(二)的相關(guān)資料,需要的朋友可以參考下2017-06-06
Spring?Security中自定義cors配置及原理解析
在Spring框架中,通過自定義CORS配置可根據(jù)實(shí)際情況調(diào)整URL的協(xié)議、主機(jī)、端口等,以適應(yīng)"同源安全策略",配置原理涉及CorsConfigurer和CorsFilter,自定義配置需要注意@Configuration注解、方法名以及可能的@Autowired注解2024-10-10
FastJson踩坑:@JsonField在反序列化時(shí)失效的解決
這篇文章主要介紹了FastJson踩坑:@JsonField在反序列化時(shí)失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

