Eigen에서 희소 행렬의 대각선을 편집하는 가장 빠른 방법은 무엇입니까? 이미 삼중 항을 사용하여 값을 채 웠습니다. 그러나 대각선 값을 모두 변경해야하는 경우가 있습니다 (이미 0이 아닌 값으로 설정되어 있음). 각 액세스 이진 검색을 포함으로희소 행렬의 고유 대각선 업데이트
답변
이 허용하는 경우, 당신은 단순히
sp_mat(i, i)
처럼 자신의 인덱스를 사용할 수, 성능이 만족되지 않을 수 있습니다. 이 경우 몇 가지 제한 사항으로 더 나은 성능을 얻을 수 있습니다.
- 행렬의 기본 레이아웃을 변경하지 않습니다. nnzs 추가/삭제, 압축;
- 대각선으로 반복적으로 액세스 할 것입니다.
이러한 제한 사항으로 인해 나중에 O (1) 시간대에 데이터에 액세스 할 수 있도록 대각선 구성 요소의 포인터를 저장할 수 있습니다.
sp_mat.diagonal().array() += 1;
이 경고 : 당신은 인스턴스가 각각의 대각선 요소에 하나를 추가 할 수 당신은 또한, 밀도 벡터 표현을 통해 대각선을 편집 할 수 있습니다, kangshiyin 응답을 완료하려면
&sp_mat(i, i)
로 포인터를 얻을 수 있습니다 : 대각 요소가 이미있는 경우에만 작동합니다. 원래 질문의 경우입니다.
내게있어 요소들은 이미 존재할 것이다. 그 표현식이 포인터를 저장하고 직접 변경하는 것보다 더 빠르거나 느릴 것이라고 기대하십니까? – cgreen
이 방법은 매번 바이너리 검색을 필요로하지만, 어떤 경우에는 쓰기가 쉽습니다. – ggael
v3.2.9에서 .diagonal()을 사용할 수 있습니까? – kangshiyin
- 1. 희소 행렬의 행에서 희소 대각선 행렬을 만듭니다.
- 2. 대각선 행렬의 고유 사용
- 3. 큰 블록 대각선 희소 행렬의 역함수가
- 4. 크고 희소 한 행렬의 고유 값 찾기
- 5. scipy에서 희소 행렬의 0이 아닌 대각선 요소 제거/설정
- 6. 큰 (희소) 행렬의 고유 값과 고유 벡터 찾기
- 7. 행렬의 문장 - 대각선 경우
- 8. 행렬의 행렬 대각선 요소
- 9. 행렬의 블록 대각선 바인딩
- 10. 대칭 대각선 행렬의 표현
- 11. 희소 행렬의 유사성 계산
- 12. 희소 행렬의 점 제품
- 13. 희소 행렬의 가변 개수
- 14. 희소 행렬의 최대 합 부분 직사각형
- 15. 비 정방 행렬의 대각선 - 파이썬
- 16. 상자의 결정은 행렬의 대각선 부분입니다
- 17. numpy에서 행렬의 대각선 값을 변경하십시오.
- 18. 행렬의 모든 대각선 벡터를 얻으십시오.
- 19. Matlab : 희소 행렬의 열만 바꾸기
- 20. 희소 행렬의 행 단위 정렬
- 21. 매우 큰 희소 행렬의 svd
- 22. MATLAB에서 희소 행렬의 이상한 행동
- 23. 고유를 사용하여 대각선 행렬의 값을 어떻게 설정합니까?
- 24. 희소 행렬에서 가장 큰 고유 값 찾기
- 25. 반복하지 않고 정방 행렬의 대각선 요소를 대입합니다.
- 26. matlab : 대용량 희소 행렬의 블록 대각선을 추출하십시오.
- 27. R : 희소 행렬의 모든 항목을 매핑하는 방법
- 28. R에있는 큰 희소 행렬의 선형 독립
- 29. 희소 행렬의 희소성 결정 (릴 행렬)
- 30. 두 희소 행렬의 열을 균등화하는 방법
바로 이러한 것들이 제 조건입니다. 해당 위치에 대한 포인터에 액세스하는 방법을 알고 있습니까? – cgreen
@cgreen use'&' – kangshiyin