Google Sheets中65x65矩阵转对角矩阵公式出错,求正确解法
Google Sheets 生成对角矩阵的正确公式
原公式失效的核心问题是用了单元格的绝对行列号判断,而非矩阵内部的相对位置:ROW(B10:BN74)返回单元格实际行号(比如B10是10),COLUMN(B10:BN74)返回实际列号(比如B列是2),只有行号等于列号的极少数单元格会被保留,完全不符合对角线的逻辑。
要生成仅保留原矩阵对角线元素的对角矩阵,必须基于矩阵内部的相对行列索引判断,正确公式如下:
针对命名区域table_name的公式
=ArrayFormula(IF(ROW(table_name)-MIN(ROW(table_name))+1=COLUMN(table_name)-MIN(COLUMN(table_name))+1, table_name, 0))
公式逻辑说明
ROW(table_name)-MIN(ROW(table_name))+1:计算每个单元格在矩阵内的相对行号(从1开始递增)COLUMN(table_name)-MIN(COLUMN(table_name))+1:计算每个单元格在矩阵内的相对列号(从1开始递增)- 当相对行号与相对列号相等时,保留原矩阵的对应元素;否则填充0
验证示例
以你提供的4x4矩阵为例:
输入矩阵(假设命名为test_matrix):
[[0.16595599 0.78837343 0.94121201 0.9733295 ] [0.61527215 0.61785812 0.57019677 0.72195175] [0.22426931 0.29664025 0.11872772 0.31798318] [0.41426299 0.0641475 0.69247212 0.56660145]]
使用上述公式后,将得到预期的对角矩阵:
[[0.16595599 0. 0. 0. ] [0. 0.61785812 0. 0. ] [0. 0. 0.11872772 0. ] [0. 0. 0. 0.56660145]]
内容的提问来源于stack exchange,提问作者The Dan
相关产品推荐
相关产品推荐

