Hello everybody. I have a code which I found to be very slow, compared to what I expect. I have two variables: mask (512x512x97 uint8) and maskC (512x512x97x3, uint8)
(actually the values in mask can be only between 0 and 6.) I would like to give values to maskC according to the values in "mask". Now I do this: ts=tic; maskC = zeros (512,512,97,3,'uint8'); toc(ts); ts=tic; maskC(:,:,:,1) = (mask>1 &mask<3)*255; toc(ts); ts=tic; maskC(:,:,:,2) = (mask>3 & mask<5)*255; toc(ts); ts=tic; mask(:,:,:,3) = (mask>4 &mask<7)*255; toc(ts);
The output is: 0.0003 0.29 0.31 0.29 It takes me 1 second (!!!!) to set the values of maskC in this way. On a top-speed PC. What am I doing wrong? I would expect there should be some way to do this in less than 10ms! (like the creation of maskC in 0.3 ms!!) I think I should be use logical indexing. But I don't see how in this case, where I add another dimension.