B<-as(A, "sparseMatrix")
으로 만든 매트릭스에서 Matrix:::qr()
함수로 QR 분해를 수행하려고합니다. Matrix:::qr.R()
으로 R 매트릭스를 얻을 수 있다는 것을 알고 있습니다. 그러나 Q 매트릭스도 필요합니다. Matrix 패키지에는 qr.Q() 함수가없는 것 같습니다. 어떻게하면 Q 매트릭스를 얻을 수 있습니까?매트릭스 패키지에서 "sparseMatrix"클래스의 객체에 대해 QR 분해를 수행하려면 어떻게해야합니까?
3
A
답변
1
Q
매트릭스는 실제로 V
슬롯에 저장됩니다. 현재 R Matrix 버전에는 버그가있는 것으로 보입니다. qr 분해를하기 전에 신비하게 행 037을 매트릭스 a
에 추가합니다. 개발자들이 와서 설명해주기를 바랍니다. 따라서 다음과 같은 코드는 R 모두 Q를 복구하는 데 도움이 :
gx.qr.Q <- function(a){
if(is(a, "qr")){
return(qr.Q(a, complete = T))
}else if(is(a, "sparseQR")){
Q <- diag(nrow = [email protected]@Dim[1], ncol = [email protected]@Dim[1])
for(i in rev(1:[email protected]@Dim[2])){
Q <- Q - ([email protected][ ,i] * [email protected][i]) %*% ([email protected][ ,i] %*% Q)
}
return(Q[order([email protected]), ][1:[email protected][1], 1:[email protected][1]])
}else{
stop(gettextf("gx.qr.Q() fails on class '%s'", class(a)[1]))
}
}
gx.qr.R <- function(a){
if(is(a, "qr")){
return(qr.R(a, complete = T)[ ,order(a$pivot)])
}else if(is(a, "sparseQR")){
if(length([email protected]) == 0){
return([email protected][1:[email protected][1], ])
}else{
return([email protected][1:[email protected][1] ,order([email protected])])
}
}else{
stop(gettextf("gx.qr.R() fails on class '%s'", class(a)[1]))
}
}
나는 무작위로 설정 매트릭스 크기와 희소성에 의해 테스트 한 그들은 원활하게 작동합니다. 그러나 이것은 "왜 그런지 모른 채 작동하게"하는 스타일이며 토론을 위해 여기에 게시됩니다. 왜냐하면 나는 패키지 "매트릭스"의 구현 세부 사항을 해킹하지 않았기 때문이다.
관련 문제
- 1. 사진에 대해 작업을 수행하려면 어떻게해야합니까?
- 2. Mongo에서 배열에 대해 $ 및 쿼리를 수행하려면 어떻게해야합니까?
- 3. MATLAB에서 논리 행렬에 대해 XOR을 수행하려면 어떻게해야합니까?
- 4. 요소 선택기에 대해 jquery에서 OR을 수행하려면 어떻게해야합니까?
- 5. 3x3 대칭 매트릭스 스펙트럼 분해를 계산하는 빠른 방법
- 6. CPLEX에서 기능을 수행하려면 어떻게해야합니까?
- 7. UIWebView에서 페이징을 수행하려면 어떻게해야합니까?
- 8. 충돌 테스트를 수행하려면 어떻게해야합니까?
- 9. JQuery에서 루프를 수행하려면 어떻게해야합니까?
- 10. 파이썬에서 정규식을 수행하려면 어떻게해야합니까?
- 11. Appcelerator를 사용하여 현지화를 수행하려면 어떻게해야합니까?
- 12. 일련의 이미지에 대해 많은 임의의 작업을 수행하려면 어떻게해야합니까?
- 13. ClientSide JQGrid의 모든 열에 대해 정렬을 수행하려면 어떻게해야합니까?
- 14. 특정 항목 Amazon.com에 대해 REST 호출을 수행하려면 어떻게해야합니까?
- 15. 하나의 열과 'n'개의 행만있는 파일에 대해 빠른로드를 수행하려면 어떻게해야합니까?
- 16. iOS에서 인터넷 연결없이 단일 단어에 대해 음성 인식을 수행하려면 어떻게해야합니까?
- 17. 두 개의 튜플 목록에 대해 완전 동일성 비교를 수행하려면 어떻게해야합니까?
- 18. TFS에서 특정 변경 집합에 대해 근거없는 병합을 수행하려면 어떻게해야합니까?
- 19. 여러 열 기본 키에 대해 창 쿼리를 수행하려면 어떻게해야합니까?
- 20. 여러 웹 사이트로 이동하는 콘텐츠에 대해 CSS 재설정을 수행하려면 어떻게해야합니까?
- 21. CoffeeScript에서 주사 작업을 수행하려면 어떻게해야합니까?
- 22. 텍스처에서 HSL 변환을 수행하려면 어떻게해야합니까?
- 23. UISplitView로 애니메이션 전환을 수행하려면 어떻게해야합니까?
- 24. LU 분해를 어떻게 인쇄합니까?
- 25. 쌍의 행렬에서 스칼라 곱셈을 수행하려면 어떻게해야합니까?
- 26. 하나의보기에서 멀티 태스킹을 수행하려면 어떻게해야합니까?
- 27. 오라클에서 근접 검색을 수행하려면 어떻게해야합니까?
- 28. 괜찮은 음성 탐지를 수행하려면 어떻게해야합니까?
- 29. Ruby에서 위치 대체를 수행하려면 어떻게해야합니까?
- 30. Clojure에서 유형 변환을 수행하려면 어떻게해야합니까?
누군가가 함수가 "complete = F"를 처리하지 못한다는 것을 상기시켜줍니다. 하나는 신중하게 일부 행이나 열을 삭제하여 문제를 해결합니다. 그러나 여전히 qr 분해가 수학 정의와 비교하여 매우 정교하게 설계된 이유에 대해 혼란 스럽습니다. –