Re: [問題] 二維陣列運算問題

看板C_and_CPP (C/C++)作者 (可愛的小松鼠)時間3月前 (2024/07/25 11:54), 3月前編輯推噓1(104)
留言5則, 2人參與, 3月前最新討論串2/2 (看更多)
定義滿模糊的,不懂為什麼一定要用乘法去做? 如果只是要特定的某行 某列 變成0 針對特定的column 跑一個loop 把該行變成0 針對特定的row 跑一個loop 把該行變成0 // column 就是你想要清成0的那一行 for(int i = 0; i < 矩陣高度 ; i++){ arr[i][column] = 0; } // row 就是你想要清成0的那一列 for(int j = 0; j < 矩陣寬度 ; j++){ arr[row][j] = 0; } 如果硬要用矩陣乘法, 那就是取單位矩陣,對應的行數或列數設成0,再做矩陣乘法。 只要注意矩陣的維度要能和原始輸入矩陣A銜接即可。 https://i.imgur.com/sAZ59d9.jpeg
例如: 對一個3x3的矩陣,把中間那行 和 中間那列都清成0 A = [ 1, 2, 3] [ 4, 5, 6] [ 7, 8, 9] [1, 0, 0] [1, 2, 3] [1, 2, 3] [0, 0, 0] * [4, 5, 6] = [0, 0, 0] [0, 0, 1] [7, 8, 9] [7, 8, 9] [1, 2, 3] [1, 0, 0] [1, 0, 3] [0, 0, 0] * [0, 0, 0] = [0, 0, 0] [7, 8, 9] [0, 0, 1] [7, 0, 9] ※ 引述《rtes (unbutu)》之銘言: : 大家好,小弟請教個問題 : 有1 二維陣列 如下 為L[4,9] 陣列 : 2, 7,51,32,63,12,66, 79, 18 : 1,15,51,96,77,12,72, 885, 96 : 57,85, 0,12, 0,12,52, 752, 13 : 11,41,51,32,81,32,0, 15, 32 : 透過一transnform rule F(L[4,9] : 輸出如下矩陣 0[4,9] : 2, 7,51,32,63,12, 0, 79, 18 : 1,15,51,96,77,12, 0, 885, 96 : 0, 0, 0, 0, 0, 0, 0, 0, 0 0 : 11,41,51,32,81,32,0, 15, 32 : 問如何實作Transform rule? : 看起來是想將第7行與第3列變成0 : 我規劃乘一個9*9 矩陣去轉換 : 第7行變成0 我會 : 但第3列變成0,要如何維持其他列的值不變? 想不太出來 : 可否請大家給我一些想法意見 : 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.61.25 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1721879693.A.98B.html

07/25 11:57, 3月前 , 1F
至於為什麼這樣,則是來自於 矩陣乘法的定義
07/25 11:57, 1F

07/25 11:57, 3月前 , 2F
列操作 和 行操作 row operation, column operation
07/25 11:57, 2F

07/25 11:57, 3月前 , 3F
可參考 線性代數 相關書籍或學習資源
07/25 11:57, 3F
※ 編輯: cuteSquirrel (1.161.61.25 臺灣), 07/25/2024 11:59:32

07/25 18:30, 3月前 , 4F
非常謝謝您的指導,我明白了 謝謝
07/25 18:30, 4F

07/26 20:45, 3月前 , 5F
:)
07/26 20:45, 5F
文章代碼(AID): #1ceSoDcB (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ceSoDcB (C_and_CPP)