【发布时间】:2017-02-19 20:52:25
【问题描述】:
我在使用 MATLAB 时遇到问题。我想创建一个巨大的邻接矩阵,为了实现这个结果,我编写了一些生成 3 个向量的代码:NodeX、NodeY 和 Weight。
NodeX代表矩阵的行索引。
NodeY代表矩阵的列索引。
Weight 是一个包含权重的向量。
所有这些向量都放入一个.csv 文件中,MATLAB 非常容易读取该文件。但是当我创建矩阵时,我遇到了问题。这是我用来将索引与权重相关联的代码。
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"
【问题讨论】:
-
在
WeightedMatrix(NodeY(1), NodeX(1))中,如果您想看到与Weight(1)相同的结果,您不应该更改参数的顺序吗? -
不幸的是结果是一样的..谢谢
-
我认为您应该分享您读取/生成三个向量的代码部分。
-
@erfan 我添加了最终代码。如果你想要所有的代码,请告诉我。
-
如果你能成功读取所有3个向量NodeX、NodeY和Weigth,你能不能试试这个……:
WMatrix = zeros(max(NodeX), max(NodeY));WMatrix(NodeX , NodeY) = Weigth
标签: matlab matrix vector indexing