Matlab을 사용하는 데 문제가 있습니다. 거대한 인접성 행렬을 만들고 싶습니다.이 결과를 얻으려면 3 벡터를 생성하는 코드를 작성했습니다 : NodeX
, NodeY
및 Weight
.Matlab에서 벡터로 가중치 행렬을 구축하십시오.
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
(가중치 벡터에 존재하는 값이지만 내가 원하는 값 아니다된다).
그리고 내가 할 경우 : 그것은 (내가 원하는 값이다) ans = 1.2550
을 반환
Weight(1)
.
이 세 벡터는, 예를 들면 다음과 같습니다 는 Data Imported from .Csv
이 .csv 파일을 생성하는 마지막 부분입니다 :
tmp = set(Final)
tmp = tuple(tmp)
for z in tmp:
print str(z[0]) + "," + str(z[1]) + "," + str(z[2]) + "\n"
어떤 도움이 매우 이해할 수있을 것이다. 감사합니다.
당신은 메모리 문제를 방지하기 위해 희소 행렬로 인접 행렬을 형성 할 수
(NodeY (1), NodeX (1))'Weight (1) '과 같은 결과를보고 싶다면 인수의 순서를 변경해서는 안됩니까? – erfan
불행히도 결과는 동일합니다. 감사합니다. –
3 개의 벡터를 읽거나 생성하는 코드 부분을 공유해야한다고 생각합니다. – erfan