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

作者: cuteSquirrel (松鼠)   2024-07-25 11:54:51
定義滿模糊的,不懂為什麼一定要用乘法去做?
如果只是要特定的某行 某列 變成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,要如何維持其他列的值不變? 想不太出來
: 可否請大家給我一些想法意見
: 謝謝大家
作者: cuteSquirrel (松鼠)   2024-07-25 11:57:00
至於為什麼這樣,則是來自於 矩陣乘法的定義列操作 和 行操作 row operation, column operation可參考 線性代數 相關書籍或學習資源
作者: rtes (unbutu)   2024-07-25 18:30:00
非常謝謝您的指導,我明白了 謝謝
作者: cuteSquirrel (松鼠)   2024-07-26 20:45:00
:)

Links booklink

Contact Us: admin [ a t ] ucptt.com