매우 긴 벡터 1xr v
과 매우 긴 벡터 w
1xs 및 매트릭스가 A
rxs입니다 (스파 스하지만 크기는 매우 큽니다).Matlab은 다음을 최적화하지 않습니까?
내가 matlab에 최적화 될 다음 그래서 메모리 문제로 실행되지 않습니다 기다리고 있었다 : 나는 때문에, 매트랩 실제로 전체 v'*w
매트릭스를 생성하기 위해 노력하고있다처럼
A./(v'*w)
하지만이 보인다 메모리 부족 문제가 발생했습니다. 이것을 극복 할 수있는 방법이 있습니까? A
의 값은 0
이기 때문에 모두 v'*w
을 계산할 필요가 없습니다.
편집 :이 방법을 사용할 수 있다면, 한 가지 방법은 A(find(A))./(v'*w)(find(A));
을하는 것입니다 할 수 있습니다하지만 당신은 먼저 계산에 넣어없이 매트릭스 (이 경우 v'*w
)의 부분 집합을 선택할 수 없습니다 변수.
['spfun'] (http://www.mathworks.com/help/matlab/ref/spfun.html) - "제로가 아닌 스파 스 행렬 요소로 기능을 적용" –
음 ... spfun은 좋은 리드 일지 모르지만이 경우에는 어떻게 사용하는지 잘 모르겠습니다. 첫째, 평가 된 함수는 그것이 적용된 행렬 셀의 인덱스를 인식하지 못합니다. – kloop