我在使用MATLAB时遇到了问题。我想创建一个巨大的邻接矩阵,为了实现这个结果,我写了一些生成3个向量的代码:NodeX
,NodeY
和Weight
。
NodeX
表示矩阵的行索引。
NodeY
表示矩阵的列索引。
Weight
是一个包含权重的向量。
所有这些向量都被放入一个MATLAB非常容易读取的.csv
文件中。但是当我创建矩阵时,我遇到了问题。这是我用来将索引与权重相关联的代码。
for i=1:1:3873
WeightedMatrix(NodeY(i), NodeX(i)) = Weight(i);
end
我看到的结果对我来说有点奇怪。事实上,如果我这样做:
WeightedMatrix(NodeY(1), NodeX(1))
MATLAB打印给我:
ans = 0.2483
这是一个存在于权重向量中的值,但它不是我想要的值。
如果我这样做:
Weight(1)
它返回ans = 1.2550
(这是我想要的值)。
这三个向量是例如:
这是创建.csv
文件的最后一部分:
tmp = set(Final)
tmp = tuple(tmp)
for z in tmp:
print str(z[0]) + "," + str(z[1]) + "," + str(z[2]) + "\n"
答案 0 :(得分:0)
您可以将邻接矩阵形成为稀疏矩阵以防止内存问题:
WeightedMatrix_sp = sparse(NodeX, NodeY, Weight);
如果你有足够的内存,你可以将稀疏矩阵转换为密集矩阵:
WeightedMatrix = full(WeightedMatrix_sp);