Removing nested for loops for quicker time
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I need help removing the nested for loop in this code.
The code right now has imagesList, totalDistance which are 4D arrays, and finalPixels is a 3D array and index is a 2D array.
The code goes through each of the rows and columns to replace them with colours in the finalPixels which are each stored in its own 2D array which (:,:,1) is red (:,:,2) is green and (:,:,3) is blue.
[~,index]=max(totalDistance,[],4);
[rows,cols]=size(index);
finalPixels=zeros(rows,cols,3);
for i=1:rows
for j=1:cols
finalPixels(i,j,1)=imagesList(i,j,1,index(i,j));
finalPixels(i,j,2)=imagesList(i,j,2,index(i,j));
finalPixels(i,j,3)=imagesList(i,j,3,index(i,j));
end
end
0 Commenti
Risposte (2)
Bob Thompson
il 11 Set 2019
I'm shooting in the dark a bit on this one, but I think you can get rid of both loops. The only thing I'm not entirely sure about is whether the indexing for the max 4th dimension value will work correctly.
finalPixels(:,:,1:3)=imagesList(:,:,1:3,index);
Without a sample of data I wouldn't be able to test it, but feel free to post any problems you have.
2 Commenti
Bob Thompson
il 12 Set 2019
Ok, so it's trying to use each of the elements in the 2D index array. I thought that might happen, but I had hoped it wouldn't. Unfortunately, I cannot think of another way to avoid using loops. It doesn't mean it doesn't exist, I just don't know it.
Bruno Luong
il 11 Set 2019
Modificato: Bruno Luong
il 11 Set 2019
I know
- totalDistance third dimension is a singleton
- p, the third dimension imagesList of is 3, and
- other dimensions of totalDistance and imagesList match
which are all important piece of information and you must learn to clearly state when asking question for people who can understand
[~,index] = max(totalDistance,[],4);
[m,n,p,~] = size(imagesList);
x = m*n*p;
finalPixels = reshape(imagesList((1:x)'+x*(repmat(index(:)-1,p,1))),[m,n,p]);
0 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!