How to read in specific File names?

2 views (last 30 days)
I have a matrix containing a list of .csv files from a specific folder.
There are two different files however, one which ends in '_DE.csv' and the other ending with '_NDE.csv'.
What code can I use to specifically read them individually dependent on whether it is DE or NDE? This needs to be for i number of files.
An idea I think is to use if to produce a matrix of equal dimensions but with 1's and 0's for the specific file I want then multiply, but any attempt at this has failed so far.

Accepted Answer

Stephen23
Stephen23 on 6 Feb 2017
Edited: Stephen23 on 6 Feb 2017
>> C = {'A_NDE.csv';'B_DE.csv';'C_DE.csv';'E_NDE.csv';'F_NDE.csv'};
>> T = regexpi(C,'_(N?)DE.csv$','once','tokens');
>> X = cellfun('isempty',[T{:}]) % True == NE, False == NDE
X =
0 1 1 0 0
and getting just those names:
>> C(X)
ans =
'B_DE.csv'
'C_DE.csv'
>> C(~X)
ans =
'A_NDE.csv'
'E_NDE.csv'
'F_NDE.csv'

More Answers (1)

Guillaume
Guillaume on 6 Feb 2017
Assuming your matrix is actually a cell array of char vectors, the easiest way in R2016b is to use the new string class:
demoarray = {'file1_DE.csv', 'file2_NDE.csv', 'file3_NDE.csv', 'file4_DE.csv'};
desiredending = '_DE.csv';
filteredarray = demoarray(endsWith(string(demoarray), '_DE.csv'))

Community Treasure Hunt

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

Start Hunting!