For loop for many images

1 view (last 30 days)
Hi All,
I have thousands of images each image has size (228*196), Each 7 images have same date. I need your help to create a code to do calculation which is (7th image - 2nd image)/(7th image + 2nd image).. I want to do that for each date.
Thank you
reyadh Albarakat
reyadh Albarakat on 7 Apr 2017
Hi Walter Roberson,
yes there is a date and the band number here is the example:
((MOD09A1. A2000057.h21v05.006.2015136062042.hdf_sur_refl_ b01_clip.tif_mosaico_ream.tif)) ((MOD09A1. A2000057.h21v05.006.2015136062042.hdf_sur_refl_ b02_clip.tif_mosaico_ream.tif)) ((MOD09A1. A2000057.h21v05.006.2015136062042.hdf_sur_refl_ b03_clip.tif_mosaico_ream.tif)) ((MOD09A1. A2000057.h21v05.006.2015136062042.hdf_sur_refl_ b04_clip.tif_mosaico_ream.tif)) ((MOD09A1. A2000057.h21v05.006.2015136062042.hdf_sur_refl_ b05_clip.tif_mosaico_ream.tif)) ((MOD09A1. A2000057.h21v05.006.2015136062042.hdf_sur_refl_ b06_clip.tif_mosaico_ream.tif)) ((MOD09A1. A2000057.h21v05.006.2015136062042.hdf_sur_refl_ b07_clip.tif_mosaico_ream.tif))

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 7 Apr 2017
dinfo = dir('*_b02_clip.tif_mosaico_ream.tif');
nfile = length(dinfo);
filenames = {};
for K = 1 : nfile
b2_file = filenames{K};
b7_file = b2_file; b7_file(end-27) = '7';
b2_data = double( imread(b2_file) );
b7_data = double( imread(b7_file) );
result = (b7_data - b2_data) ./ (b7_data + b2_data);
%now what?
Walter Roberson
Walter Roberson on 7 Apr 2017
It already loops over all dates, provided that the band 2 files all end in b02_clip.tif_mosaico_ream.tif
If not then you could perhaps use
dinfo = dir('*_b02_*.tif');
If the b02 part is not consistent then you need to be clearer as to how you can recognize the band number.

Sign in to comment.

More Answers (0)


Find more on Dates and Time in Help Center and File Exchange


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by