1、首先我们观察内置函数DiagonalMatrix函数。该函数要求列表必须是单层向量,如果我们尝试直接把矩阵放进去就报错。我们无法直接用该函数生成准对角矩阵。
2、方法1(♥♥♥♥):使用替换 /.首先,我们先用几个未定义符号m1,m2,m3等等来代替对角线元素,然后使用 /. 后面跟一个替换规则的列表来实现。如图。
3、接着,我们使用ArrayFlatten自动把0变成零矩阵。该函数详细用法可查阅帮助文档。如图,完成目标。
4、方法2(♥♥):使用Table重新构造我们的矩阵列表。myMatrixs是我们希望放在对角线上的矩阵列表,我们取出每个元素,在前后补恰当个数的0.
5、方法3(♥♥♥♥♥):使用ToString和ToExpression,发挥解释型语言的优势。核心代码只需要两行。首先使用Table生成一个字符串列表{"myMatrixs[[1]]", "myMatrixs[[2]]", "myMatrixs[[3]]"}接着使用DiagonalMatrix把这个有猫腻的向量变为对角矩阵。然后ToExpression变魔术,再ArrayFlatten即可.