[問題] 矩陣運算的問題

看板C_and_CPP (C/C++)作者 (幻滅)時間12年前 (2013/11/05 15:41), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++2010 問題(Question): 我想請問一下對於多維的矩陣運算是否有較快的方法 在我以往看到的寫法都是用for迴圈去展開 例如 我的是三維矩陣A[D][M][N]+B[D][M][N] 但如果我的矩陣很大(M、N很大) 又很多(D很大) 運算流程是 for(int i; i<D; i++){ for(int j; j<M; j++){ for(int k; k<N; k++){ C[i][j][k]=A[i][j][k]+B[i][j][k]; } } } 所以我想問一下 是否有可以比較簡化的用法 例如我只要 for(int i; i<D; i++){ C[i]=A[i]+B[i]; } 就可以達到跟上面一樣的效果,而不用一層一層下去慢慢算 當然運算的流程是比較固定型式的 例如C[i][j]=A[i][j]+B[i][j]或是C[i][j]=B[i][j]-A[i][j] 都是固定的 行對應行 列對應列 因為我想增加我程式的運算速度,但爬了一下文 似乎沒有我所想要的這種方法? 大都是使用多執行緒來增加速度(我是想多用一些方法來增加速度),還是說這種運算, 只能靠找出它的規則來化簡程式的寫法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.236.116

11/05 15:52, , 1F
SIMD 可是如果M、N很大基本上效果有限
11/05 15:52, 1F
其實說大也不是很大 基本上是我誇大的講法 我是想形容說 如果D、M、N都不小的話 那對於在for迴圈作運算的時間就會長很多 所以想請教有沒有方法可以減少這些時間
※ 編輯: abab7974 來自: 210.240.236.116 (11/05 16:13)

11/05 16:14, , 3F
感謝樓上,我GOOGLE矩陣相乘/運算都沒看到類似的東西
11/05 16:14, 3F

11/05 16:15, , 4F
我錯了 那是 2012 才有的絕招
11/05 16:15, 4F

11/05 16:19, , 5F
沒關係 我在看看有沒有其他方法或是想辦法弄到2012
11/05 16:19, 5F

11/05 16:50, , 6F
http://ppt.cc/Pj6G 我是微軟msdn派的 >///<
11/05 16:50, 6F

11/05 19:30, , 7F
你想問的是多維的陣列還是矩陣阿...= =a
11/05 19:30, 7F

11/06 09:52, , 8F
應該是陣列..其實我有點分不清矩陣跟陣列的差別
11/06 09:52, 8F

11/06 12:37, , 9F
向量=一維陣列, 矩陣=二維陣列; 多維陣列維度超過1, 包含矩陣.
11/06 12:37, 9F
文章代碼(AID): #1IUA4nxn (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1IUA4nxn (C_and_CPP)