2012-07-31 7 views
0

머리말 : matlab guiderules는 matlab에서 스파 스 행렬을 효율적으로 채우려는 경우 일반적으로 행렬에 인덱스 벡터와 값 벡터를 작성해야합니다 그는 할당하고, 모든 과제를 하나의 원자 적 작업으로 집중하여 matlab이 미리 매트릭스를 "준비"하고 할당 속도를 최적화 할 수있게하려고합니다. 간단한 예 :matlab : 추가로 희소 행렬 채우기

A=sparse([]); 
inds=some_index_generating_method(); 
vals=some_value_generating_method(); 
A(inds)=vals; 

내 질문 : 나는 inds 겹치는 인덱스를 포함하는 경우에 할 수있는 일, 즉 inds=[4 17 8 17 9] 17 반복 두 번. 이 경우 가, 내가 일이 싶은 것은 어떤 간단하고 있는가 매트릭스는 앞의 예

A(17)=vals(2)+vals(4) %as inds(2)==inds(4) 

를 들어, 같은 인덱스에 매핑 된 모든 값의 추가 할당, 즉 될 것입니다, 가장 중요한 것은 입니다. "더 똑똑한"방법으로 인덱스와 값을 생성 할 방법이 없습니다.

답변

4

이 도움이 될 수 있습니다 :

S = sparse(i,j,s,m,n,nzmax)nzmax nonzeros에 할당 된 공간 더불어, m -by- n 희소 행렬 등이 S(i(k),j(k)) = s(k)를 생성하는 벡터 i, j, 및 S를 사용합니다. 벡터 i, js의 길이는 모두 같습니다. 0이되는 s의 요소는 모두 ij의 해당 값과 함께 무시됩니다. 중복 값이 ​​ijs의 요소는 모두입니다.

은 자세한

+0

에서 와우. 그 부분을 완전히 놓쳤습니다. 감사! – olamundo