繁体   English   中英

用向量在MATLAB中构建加权矩阵

[英]Build weighted matrix in MATLAB with vectors

我在使用MATLAB时遇到了问题。 我想创建一个巨大的邻接矩阵,为了实现这个结果,我写了一些生成3个向量的代码: NodeXNodeYWeight

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导入

这是创建.csv文件的最后一部分:

tmp = set(Final)
tmp = tuple(tmp)
for z in tmp:
print str(z[0]) + "," + str(z[1]) + "," + str(z[2]) + "\n"

您可以将邻接矩阵形成为稀疏矩阵以防止内存问题:

WeightedMatrix_sp = sparse(NodeX, NodeY, Weight);

如果你有足够的内存,你可以将稀疏矩阵转换为密集矩阵:

WeightedMatrix = full(WeightedMatrix_sp);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM