作者cuteSquirrel (可爱的小松鼠)
看板C_and_CPP
标题Re: [问题] 二维阵列运算问题
时间Thu Jul 25 11:54:51 2024
定义满模糊的,不懂为什麽一定要用乘法去做?
如果只是要特定的某行 某列 变成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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1721879693.A.98B.html
1F:→ cuteSquirrel: 至於为什麽这样,则是来自於 矩阵乘法的定义 07/25 11:57
2F:→ cuteSquirrel: 列操作 和 行操作 row operation, column operation 07/25 11:57
3F:→ cuteSquirrel: 可参考 线性代数 相关书籍或学习资源 07/25 11:57
※ 编辑: cuteSquirrel (1.161.61.25 台湾), 07/25/2024 11:59:32
4F:推 rtes: 非常谢谢您的指导,我明白了 谢谢 07/25 18:30
5F:→ cuteSquirrel: :) 07/26 20:45