Loop through hundreds of matrices to change values larger than 1 to 0
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have more than 400 matrices, currently I am using "find" to change the values larger than 1 in the matrix to 0 one by one manually with this code:
val = find(yf > 1);
yf(val) = 0;
Is there a way to do it with loop? Please help, thank you.
3 Commenti
James Tursa
il 19 Ott 2017
"... 400 matrices ..."
How are these matrices stored? In individual variables? As part of a cell or struct array? Or ...?
Risposta accettata
Image Analyst
il 19 Ott 2017
If you want a loop and your images are in the cell array, you can do it like this:
for k = 1 : length(images)
% Extract his one image.
thisImage = images{1, k};
% Reduce/Clip values 1.000001 and larger to 1.
thisImage(thisImage > 1) = 1;
% Stick back into cell array
images{1, k} = thisImage;
end
3 Commenti
Image Analyst
il 21 Ott 2017
You're welcome, but you probably never should have stored all your images in a cell array in the first place. It takes up a lot of memory and there was probably never a need to have them all in memory simultaneously. You probably could have read your images one at a time and processed them immediately in the loop without storing them all. Anyway, thanks for Accepting the answer.
Più risposte (2)
Star Strider
il 19 Ott 2017
Instead of find, I would simply use ‘logical indexing’.
Example —
yf = 0.5 + rand(4,5)
yf(yf > 1) = 0
yf =
0.64115 1.2321 1.0209 1.3162 1.1876
1.0121 1.2498 0.71908 1.2939 1.4869
1.2213 0.90732 1.3424 0.96911 1.2699
1.4288 0.73949 1.1629 0.80952 1.3296
yf =
0.64115 0 0 0 0
0 0 0.71908 0 0
0 0.90732 0 0.96911 0
0 0.73949 0 0.80952 0
This should be more efficient, although you will still have to loop through every matrix.
2 Commenti
Star Strider
il 19 Ott 2017
That depends on how your matrices are stored. If each is in a separate file, read the file and then do the replacement.
Vedere anche
Categorie
Scopri di più su Matrix Indexing 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!