How can I vectorize/LUT this for loop ?
1 次查看(过去 30 天)
显示 更早的评论
Hello,
I have been dabbling trying to make a look-up table mapping for this tedious for-loop but I wasn't successful. Here is the code and explanation of what I am trying to do:
for kk=1:size(aa,1)
imageModified(aa(kk,1),aa(kk,2))=img(aa(kk,3),aa(kk,4));
end
My 'kk' is in order of millions for this loop is somehow time consuming.
Basically, I have a matrix called 'aa'.
'aa' is some Nx4 matrix where each row has mapping values.
What I want to do is going through row by row of matrix 'aa' and map image value 'img' to its corresponding place in image 'imageModified'.
For example,
Let's say aa=[ 50 40 60 70 ; 2 56 28 10 ; .... ]
So what I want to do is: map img(50,40) value to location imgModified(60,70). Map map img(2,56) value to location imgModified(28,10). And do that for 'aa' N rows.
Thank you in advance,
0 个评论
采纳的回答
Sven
2013-2-12
编辑:Sven
2013-2-12
Hi Louis,
This one's got a nice solution using sub2ind that lets you do the whole thing at once without a loop:
img = rand(100,100)
imgModified = zeros(size(img))
aa = [ 50 40 60 70 ; 2 56 28 10]; % etc
imgInds = sub2ind(size(img),aa(:,1),aa(:,2))
modInds = sub2ind(size(img),aa(:,3),aa(:,4))
imgModified(modInds) = img(imgInds)
Does that end up with what you intended?
2 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!