如何用Excel动态数组函数根据值列创建可嵌套MMULT的对角矩阵
Excel 内存构造隐式对角矩阵参与矩阵运算方法
全程运算在内存中完成,不需要将对角矩阵输出到工作表单元格占用存储,可直接作为MMULT等矩阵运算函数的参数参与计算
参考示例
可用公式方案
假设你的对角线元素存储在单列区域(例如示例中的A2:A5区域),可根据自身Excel版本选择对应方案:
方案1:全兼容LAMBDA版本(支持所有带LAMBDA功能的Excel 365/2021版本)
核心构造逻辑为生成n行n列的数组,仅当行号与列号相等时取对应位置的对角值,其余位置填0,对角矩阵构造公式片段:
=MAKEARRAY(ROWS(对角值列),ROWS(对角值列),LAMBDA(r,c,IF(r=c,INDEX(对角值列,r),0)))
ROWS(对角值列)会自动获取对角矩阵的阶数n,和对角值的数量保持动态匹配,不需要手动输入尺寸- 可直接将该片段嵌入矩阵运算,例如要计算该对角矩阵左乘B2:E5区域的矩阵,完整公式为:
=MMULT(MAKEARRAY(ROWS(A2:A5),ROWS(A2:A5),LAMBDA(r,c,IF(r=c,INDEX(A2:A5,r),0))),B2:E5)
方案2:简洁广播版本(支持较新版本Excel 365)
利用单位矩阵和数组广播规则实现更短的写法,先生成n阶单位矩阵,再和对角值做逐元素相乘,直接得到对角矩阵,公式片段:
=MUNIT(ROWS(对角值列))*TOROW(对角值列)
同样可以直接嵌入矩阵运算,上述左乘运算的公式可简化为:
=MMULT(MUNIT(ROWS(A2:A5))*TOROW(A2:A5),B2:E5)
注意事项
- 所有公式均为动态数组公式,输入后按回车即可自动溢出全部运算结果,不需要选中多单元格区域按数组组合键确认
- 参与
MMULT运算时需要保证矩阵尺寸匹配:对角矩阵左乘其他矩阵时,阶数需要和被乘矩阵的行数一致;右乘其他矩阵时,阶数需要和被乘矩阵的列数一致 - 如果对角线元素是存储在单行区域,将简洁版公式中的
TOROW替换为TOCOL即可适配广播规则
内容的提问来源于stack exchange,提问作者Per
相关产品推荐
相关产品推荐

