How do I simplify this command by avoiding cycle

At the end,I accept this code
destrows = repmat(ax, 1, 1,3);
destcols = repmat(ay, 1, 1,3);
[srcrows, srccols, srcpages] = ndgrid(1:iH, 1:iW, 1:3);
outImg(sub2ind(size(outImg), destrows, destcols, srcpages)) = tempImg(sub2ind(size(tempImg), srcrows, srccols, srcpages));
---
for x=1:iH
for y=1:iW
outImg(ax(x,y),ay(x,y),:)=tempImg(x,y,:);
end
end
Is it possible to use bsxfun?

 채택된 답변

Guillaume
Guillaume 2016년 6월 6일

0 개 추천

bsxfun wouldn't work for this. sub2ind will, but it won't be pretty:
numpages = size(tempImg, 3);
destrows = repmat(ax(1:iH, 1:iW), 1, 1, numpages);
destcols = repmat(ay(1:iH, 1:iW), 1, 1, numpages);
destpages = repelem(permute(1:numpages, [1 3 2]), iH, iW);
[srcrows, srccols, srcpages] = ndgrid(1:iH, 1:iW, 1:numpages);
outImg(sub2ind(size(outImg), destrows, destcols, destpages)) = tempImg(sub2ind(size(tempImg), srcrows, srccols, srcpages));

댓글 수: 1

Thanks, but My Matlab version is R2014b. So I modify your code.
destrows = repmat(ax, 1, 1,3);
destcols = repmat(ay, 1, 1,3);
[srcrows, srccols, srcpages] = ndgrid(1:iH, 1:iW, 1:3);
outImg(sub2ind(size(outImg), destrows, destcols, srcpages)) = tempImg(sub2ind(size(tempImg), srcrows, srccols, srcpages));

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

질문:

2016년 6월 6일

편집:

2016년 6월 7일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by