Find the file number when a condition meets

3 views (last 30 days)
I have for example 300 files (data1.dat data2.dat data3.dat ...), and inside every file I have for example two columns X and Y.
I want to find the number (index) of the files where this condition meets:
50< X <100 and 60 <Y< 100
To get something like that:
Files = [ 10 46 230 299 ]

Accepted Answer

John D'Errico
John D'Errico on 21 Oct 2021
Edited: John D'Errico on 21 Oct 2021
Beginners do this sort of thing. They are tentative, almost afraid to use MATLAB, even when they think they need to. So they leave their data in files. Break your problem, ANY problem too large for you to figure it out, break it into small subproblems.
Problem 1: READ IN YOUR DATA. Bring in each file into MATLAB. Until you do this, you will constantly need to be accessing each file, dealing with the names of the files, etc. If the varius files have the same number of rows, then put it all into one 3-dimensional array. If they have different numbers of rows, then put the data into a cell array. Since you will be doing something else afterwards with this data, surely you need to read it into MATLAB eventually. Do it immediately, the first thing you do.
Problem 2: Once your data is in MATLAB, now the test is simple. It will depend on how you store the data, but there are simple ways to perform the test that would take at most a few lines of code to do. You will use find in the end to determine the indices of the datasets that fit all of the necessary rules.
If the problems above are still too large, then break them down more deeply. Eat a programming elephant, even a small one, one byte at a time.

More Answers (0)

Categories

Find more on Matrices and Arrays 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!