Julia 如何将向量从上三角矩阵转换为原始对称矩阵?

Julia 如何将向量从上三角矩阵转换为原始对称矩阵?,julia,Julia,我有一个非常大的对称矩阵,叫做M。矩阵M的大小为1000000*1000000。让M[i,j]表示矩阵M的i第行和j第列的元素。对称矩阵M的上三角部分保存为名为V的向量V=[M[1,1],M[1,2],M[2,2],M[1,3],M[2,3],M[3,3],M[1,4],M[2,4],M[3,4],M[4,4],…,M[1000000,1000000]。我有三个问题 (1) 如何有效地将V转换为M (2) 如何有效地将V转换为对称矩阵M的上三角部分? 我的意思是将V转换成另一个矩阵W。W的上三角

我有一个非常大的对称矩阵,叫做
M
。矩阵
M
的大小为1000000*1000000。让
M[i,j]
表示矩阵
M
i
第行和
j
第列的元素。对称矩阵
M
的上三角部分保存为名为
V
的向量<代码>V=[M[1,1],M[1,2],M[2,2],M[1,3],M[2,3],M[3,3],M[1,4],M[2,4],M[3,4],M[4,4],…,M[1000000,1000000]。我有三个问题

(1) 如何有效地将
V
转换为
M

(2) 如何有效地将
V
转换为对称矩阵
M
的上三角部分? 我的意思是将
V
转换成另一个矩阵
W
W
的上三角部分与
M
相同,而
W
中的其他元素为0

(3) 如何有效地将
V
转换为对称矩阵
M
的下三角部分?
我的意思是将
V
转换成另一个矩阵
Q
Q
的下三角部分与
M
相同,而
Q
中的其他元素为0。

在这种情况下,创建
M
的最有效方法是拥有一个自定义类型,即
如果数据是
Float64
那么向量
V
的大小为4TB,矩阵
M
将为8TB。这真的对吗?那你就很难一下子把整件事都记住了。这是关于内存不足数据处理的问题吗?如果矩阵M的大小是100000*100000呢。非常感谢。那么,在这种情况下,阵列将分别为40和80GB。体积小得多,但仍然太大,无法保存在大多数计算机的内存中。但是,你在乎确切的尺寸吗?您是对内存不足的计算感兴趣,还是认为它应该适合内存?
struct MyMatrix{S, T<:AbstractVector{S}} <: AbstractMatrix{S}
    v::T
end