I have the following code (recognizing individuals pixels of a matrix). For a high number of images, this is very time consuming. Therefore, ¿Could the loop be avoided ? Thanks!
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
V=zeros(x,y,num_images,'uint16')
for k=1:num_images
for i= 1:x
for j= 1:y
if B(i,j,k)==0
V(i,j,k)= A(i,j,k)/3
else
V(i,j,k)= A(i,j,k)/3+(2^15)
end
end
end
end
1 Commento
KSSV
il 22 Dic 2016
First you terminate the outputs with ;. Else it will take hell lot of time, because it will print result on the screen.
V=zeros(x,y,num_images,'uint16') ;
for k=1:num_images
for i= 1:x
for j= 1:y
if B(i,j,k)==0
V(i,j,k)= A(i,j,k)/3 ;
else
V(i,j,k)= A(i,j,k)/3+(2^15) ;
end
end
end
end
Risposta accettata
David Barry
il 22 Dic 2016
Modificato: David Barry
il 22 Dic 2016
It's difficult to know the relationship between A, B and V from your example code but I am assuming they are of equal dimensions. In which case I think you probably want something like this instead of the loop.
V = zeros(size(B));
V(B == 0) = A(B == 0)/3;
V(B ~= 0) = A(B ~=0)/3 + 2^15;
0 Commenti
Più risposte (2)
John BG
il 22 Dic 2016
there is no need to initialise the void V, go straight to the indices returned from functions
- find( zeros())
- find( nonzeros())
A=A/3
V(find(zeros(B)))=A(find(zeros(B)))+2^15
V(find(nonzeros(B)))=A(find(nonzeros(B)))
if you find my answer useful would you please mark it as Accepted Answer by clicking on the ACCEPT ANSWER button?
thanks in advance for time and attention
John BG
1 Commento
Jan
il 19 Feb 2017
Modificato: Jan
il 20 Feb 2017
Both lines do not work:
- nonzeros() replies the vector of the non-zero elements and the information about the position inside B is lost.
- zeros() creates an array of zeros with the elements of B as dimensions. Therefore find(zeros(B)) will reply the empty matrix.
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!