回答
使用的理解產生了密集陣,它可以是非正方形:
julia> M = 4; N = 3;
[i==j ? 1 : i==j+1 ? -1 : 0 for i = 1:M, j=1:N]
4x3 Array{Int64,2}:
1 0 0
-1 1 0
0 -1 1
0 0 -1
或者你可以使用Bidiagonal
一個方陣:
julia> M = 4;
Bidiagonal(ones(Int, M), -ones(Int, M-1), false) # false means that it's not an upper-diagonal
4x4 Bidiagonal{Int64}:
1 0 0 0
-1 1 0 0
0 -1 1 0
0 0 -1 1
後者有一些專門的線性代數方法可能會使它更有效率。
感謝您的回答,您是說Bidiagonal()只能是方形矩陣?所以,如果我想要一個4x3的理解是要走的路? – nicolasdavid
是的,確切地說。 –
我知道現在有點晚了,但是如果你需要做的很大,我有更快的方法。爲了您的例子中,我寫了一個函數:
function Bi_diag(M,N,d1,d2)
A = zeros(M,N);
A[1:M+1:end] = d1;
A[2:M+1:end] = d2;
return A
end
這是比如果您需要爲您的小例子,一個大型矩陣上面的例子快得多:M = 4,N = 3,D1 = 1,D2 = -1。通常使用A [1:M + 1:end] = d是填充主對角線的快速方法。爲了填充較低的對角線,您可以從較低對角線的第一個元素開始(在您的示例2中),並填充一個上對角線,然後轉到M + diag,其中diag是要填充的對角線數。因此,要在小例子中填充主對角線上方的第一個對角線,它將是A [M + 1:M + 1:end] = d3。 也使用我的函數留下的可能性,把不完全相同的值(用各種數字填充對角線,而不是所有相同的數字)。
- 1. Julia中的循環創建矩陣
- 2. Julia中的有理矩陣分割
- 3. 如何在矩陣中創建Julia的簡單協方差
- 4. 創建矩陣的非對角元素
- 5. 從MATLAB矩陣陣列創建對角線矩陣
- 6. 從矩陣的一半創建對角線矩陣
- 7. 帶對角矩陣的點積,不創建它全矩陣
- 8. 創建對角矩陣(更高維)
- 9. 向量在Julia中的矩陣
- 10. 如何在SciPy中創建對角線稀疏矩陣
- 11. 如何在MATLAB中創建三對角矩陣?
- 12. 在matlab中創建塊三對角矩陣
- 13. 在R中創建對稱矩陣
- 14. 如何用列表理解建立對角線矩陣
- 15. 在對角矩陣
- 16. 無法使用數組中的::對角線創建Ruby矩陣
- 17. 在Julia中乘以兩個矩陣
- 18. Julia中的多維稀疏矩陣
- 19. 三對角矩陣的LU分解(Java)
- 20. MX創建雙矩陣錯誤VC++
- 21. 矩陣的矩陣對角元素
- 22. 將對角線放在mxn矩陣中
- 23. 在矩陣中反向對角線
- 24. 從雙列創建一個術語頻矩陣出現矩陣
- 25. 從稀疏矩陣的行創建一個稀疏對角矩陣
- 26. Julia中的條件理解
- 27. 如何在MATLAB中重新對角矩陣的對角線?
- 28. Java對角矩陣
- 29. 三對角矩陣在Matlab
- 30. 在矩陣中使用strfind在矩陣中的不同對角線方向
是否有一個特定的原因,你想使用理解? – DSM
那麼如果有更好的方法,我會很高興知道它。我只找到了雙對角函數,但是如何使這個矩陣變暗(100,100)而沒有功能或理解。 – nicolasdavid