난 a
저장 1,000 X 행 500 열의 매트릭스를 갖는다. 또한 1
와 500
사이의 범위에서 1,000 정수 l
의 벡터를 가지고있다. 모든 i
에 대해 a(i,l(i))
의 합계를 계산하려고합니다. for 루프를 사용하지 않고도 빠르게 수행 할 수 있습니까?vectorising 추상 행 조회
1
A
답변
3
당신 요소 합산하고 스칼라 합산 값을 발견 할 수있는 요소의 선형 지수를 계산할 수있다. 그래서,이 꽤 효율적으로해야 -
nrows = size(a,1) %// number of rows in input matrix a
idx = (l(:)-1)*nrows + [1:nrows]' %//'# linear indices of elements to be summed up
%// OR idx = sub2ind(size(a),[1:nrows]',l(:))
sumval = sum(a(idx)) %// index into a and get the sum value
2
을 내가 제안 할 수 있습니다 또 다른 방법은 모든 값은 logical
을하는 sparse
매트릭스를 만드는 것입니다 true
그들은 1 N
N
에 행 위치에 위치하도록 l
벡터를 사용하여 직접 행의 양과 열 위치입니다. 그런 다음이 logical
행렬을 사용하여 행렬 에 색인을 작성한 다음 모든 항목을 요약하십시오. 즉이 행의 총 수를 계산으로
s = sparse(1:size(a,1), l, true);
sumval = sum(a(s));
size(a,1)
는, 우리의 경우 N
이 될 것입니다. 방금 코드를 컴팩트하게 만들기 위해 sparse
호출 안에 배치하기로 결정했습니다.
관련 문제
- 1. vectorising 추상 스칼라 코드
- 2. Vectorising 중첩 For 루프
- 3. 조회 위로 가기 행
- 4. 빈 조회 테이블 대 일치하지 않는 조회 테이블 (조회 변환)
- 5. Drupal 7 조회 조회/페이지 조회 카운터
- 6. 조회 기준 조회
- 7. MYSQL 조회 및 조회
- 8. 조회
- 9. 추상 메서드가없는 추상 클래스
- 10. 추상 클래스의 추상 메서드
- 11. 엑셀 조회 기능
- 12. 이 느린 MySQL 쿼리를 최적화하는 방법 - 늦은 행 조회?
- 13. 조회 된 행/범위에서 최대 값 열 가져 오기
- 14. MySQL 관련 테이블 조회 및 행 -> 열
- 15. SQL - 조회 테이블의 참조 데이터를 기반으로 행 업데이트
- 16. 파이썬 CSV 조회
- 17. 가장 일반적인 시간 조회?
- 18. 나는 추상 클래스가 추상 클래스
- 19. 추상 클래스와 PyMongo; 추상 클래스를
- 20. 추상 메서드가 추상 메서드를 재정의합니다.
- 21. hbase 조회 성능
- 22. MySQL에서 액세스 조회
- 23. 추상 클래스 매개 변수를 사용하여 추상 메서드가있는 Java 추상 클래스
- 24. 다른 추상 클래스와 비 추상 클래스에 의한 추상 클래스의 상속
- 25. 배열 색인 조회 대 인스턴스 필드 조회
- 26. 하나의 조회 테이블 또는 많은 조회 테이블?
- 27. 주어진 값의 조회 셀 참조
- 28. Excel VBA 조회 문제
- 29. Excel 테이블 조회
- 30. 조회 내부 어레이 또는 Excel
니스! 나는 이것이'sub2ind'보다 더 빠를 것이라고 생각합니다. +1. – rayryeng
@rayryeng 이봐! :) 그래, http://stackoverflow.com/questions/25528685/filter-matrix-rows-depending-on-values-in-a-second-matrix/25530905# ([이되어야한다] 25530905). 실제로 내가 과거에 쓴 많은 코드에 대한 sub2ind''대신이를 사용했습니다 – Divakar
니스 :) ... 난 그냥이 점에 대해 최대 잊어 버렸습니다. – rayryeng