gpuArray loop indexing question
조회 수: 4(최근 30일)
표시 이전 댓글
Hi guys,
For those familiar with gpuArray and arrayfun, is there a way to perform the following operation?
The general form is:
[a ,b]=find(phi)
PHI=zeros(---)
for n=1:numel(a)
PHI(a(n),b(n))=phi(a(n),b(n));
end
Much thanks in advance!
댓글 수: 0
채택된 답변
Edric Ellis
2013년 12월 20일
I think part of your underlying problem must be missing here, since in this case, PHI and phi end up the same. Anyway, you could use logical indexing for this.
% generate 'phi' as a random matrix
phi = gpuArray.rand(100);
% set all elements <0.9 to zero
phi(phi < 0.9) = 0;
% pre-allocate PHI
PHI = gpuArray.zeros(size(phi));
% Instead of FIND, use 'logical' to get the places
% where phi is non-zero
match = logical(phi);
% Use logical indexing to copy the elements
PHI(match) = phi(match);
댓글 수: 0
추가 답변(0개)
참고 항목
범주
Find more on GPU Computing in MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!