假設一個 Excel 檔案逐行矢量化了 2×2 對稱矩陣,如下所示:
| 線 | 答:元素11 | B:元素22 | C: 元素 12=元素 21 | D:決定因素 |
|---|---|---|---|---|
| 1 | 2 | 3 | 0 | 6 |
| 2 | 5 | 7 | 0 | 35 |
| 3 | 11 | 13 | 0 | 143 |
| … | … | … | … | … |
因此,DETERMINANT 列的第一個值可以從矩陣 {2 0,0 3} 計算,第二個值可以從矩陣 {5 0,0 7} 計算,依此類推。D1 值可以直接計算,而不是重塑 A1:C1 值,=MDETERM(IF(A1:B1=TRANSPOSE(A1:B1),A1:B1,C1))因為IF實際上可以將 A1:C1 值重塑為感興趣的對角矩陣。
重點是,在Excel中,諸如MDETERM直接要求矩陣之類的矩陣函式,而資料中的矩陣是在向量化后逐行存盤的。不幸的是,上述IF解決方案只能重塑 2×2 對稱矩陣,并且既不能處理非對稱矩陣,也不能處理具有兩個以上非對角元素的矩陣。我們有沒有比圖示的IF矩陣解向量方法更通用的其他解決方案?
此外,我也對 Excel 中的矢量化矩陣感興趣;例如,A1:C1 中的矩陣可以在 D1:G1 區域中進行整形、倒置,然后還原。謝謝你的幫助!
uj5u.com熱心網友回復:
我想你的意思可能是
=IF(COLUMN(A1:B1)=TRANSPOSE(COLUMN(A1:B1)),A1:B1,C1)
但是你當然可以擴展這個想法。假設您在 A1:D1 中有對稱 4X4 矩陣的對角元素,在 E1:J1 中有非對角元素。
然后你可以使用
=IF(ROW(A1:D4)=COLUMN(A1:D4),INDEX(A1:J1,ROW(A1:D4)),
IF(ROW(A1:D4)<COLUMN(A1:D4),INDEX(E1:J1,(ROW(A1:D4)-1)*4 COLUMN(A1:D4)-ROW(A1:D4)*(ROW(A1:D4) 1)/2),
INDEX(E1:J1,(COLUMN(A1:D4)-1)*4 ROW(A1:D4)-COLUMN(A1:D4)*(COLUMN(A1:D4) 1)/2)))

使用 Excel 365 Let 函式更通用一點:
=LET(N,4,mat,A1:INDEX(A1:Z26,N,N),
IF(ROW(mat)=COLUMN(mat),
INDEX(1:1,ROW(mat)),
IF(ROW(mat)<COLUMN(mat),
INDEX(1:1,(ROW(mat)-1)*N COLUMN(mat)-ROW(mat)*(ROW(mat) 1)/2 N),
INDEX(1:1,(COLUMN(mat)-1)*N ROW(mat)-COLUMN(mat)*(COLUMN(mat) 1)/2 N))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/382716.html
上一篇:從另一個表的列中選擇一個表的行
