H_sparse
은 크기가 20,000 x 5,000 인 큰 매트릭스입니다. 아래 코드의 행렬 벡터 제품 dk = A * Del_H;
은 시간이 오래 걸립니다. 이 코드의 속도를 높이려면 어떻게해야합니까?for-loop 코드의 속도를 높이는 방법 (대형 행렬`H_sparse`)?
이 코드는 MATLAB의 내장 함수 pinv(H_Sparse)
과 동일한 결과를 얻는 또 다른 방법입니다. 저는 MATLAB이 pinv
에 mex 파일과 bsxfun
을 사용한다고 생각합니다. 이론 아래 알고리즘
function PINV_H_Spp = Recur_Pinv_Comp(H_Sparse)
L = 1;
H_candidate = H_Sparse(:,L);
A = pinv(H_candidate);
for L = 1:size(H_Sparse, 2) - 1
L = L + 1;
Del_H = H_Sparse(:,L);
dk = A * Del_H;
Ck = Del_H - H_candidate * dk;
Gk = pinv(Ck);
A = A - dk * Gk;
A(end+1,:) = Gk;
H_candidate(:,end+1) = Del_H;
end
PINV_H_Spp = A;
코드는 샘플 데이터로 H_Sparse = rand(20000, 5000)
를 사용 pinv(H_Sparse)
와 비교 될 수있다. 개선