find the difference of two structure elements

50 views (last 30 days)
Hello,
I'm trying to list files in a directory and categorize them. The files have the naming convention as follow:
Slow3C(20150721-1245).txt
Slow3CGO(20150721-1245).txt
Slow3CLMMax(20150721-1245).txt
Slow3CLMMin(20150721-1245).txt
Slow3CTC(20150721-1245).txt
Slow3CTrig(20150721-1245).txt
What I did is:
daq_files=dir('*(*).txt'); % all DAQ files
TCdaq_files=dir('*TC(*).txt'); % all TC files
GOdaq_files=dir('*GO(*).txt'); % all GO files
LMMindaq_files=dir('*LMMin(*).txt'); % all LMMin files
LMMaxdaq_files=dir('*LMMax(*).txt'); % all LMMax files
Trigdaq_files=dir('*Trig(*).txt'); % all Trig files
maindaq_files=
which gives a list of all the files, and put the filenames with TC, GO, etc.. in their own structure. I want the maindaq_files to be Slow3C(20150721-1245).txt, so I'm trying to figure out if I can find the difference between daq_files.name element and all the other variables'.name element, but I'm a little stuck. Is ther a way to do this?
Thanks!

Accepted Answer

Jos (10584)
Jos (10584) on 23 Jul 2015
Edited: Jos (10584) on 23 Jul 2015
help setdiff
First put the names of the files into a cell array.
A = {daq_files.name} ;
B = {TCdaq_files.name} ;
Using the indices returned by setdiff you can select the elements from the original structure arrays returned by dir.
[~,ia,ib] = setdiff(A,B) ;
daq_files = daq_files(ia) ;
Something along these lines should work for you :-)

More Answers (3)

Jon
Jon on 23 Jul 2015

Jon
Jon on 23 Jul 2015

Max Bernstein
Max Bernstein on 23 Jul 2015
Thanks Jos for your help, I figured it out using your hint. What I did was:
Alldaq_files=dir('*(*).txt'); % all DAQ files
TCdaq_files=dir('*TC(*).txt'); % all TC files
GOdaq_files=dir('*GO(*).txt'); % all GO files
LMMindaq_files=dir('*LMMin(*).txt'); % all LMMin files
LMMaxdaq_files=dir('*LMMax(*).txt'); % all LMMax files
Trigdaq_files=dir('*Trig(*).txt'); % all Trig files
All = [{TCdaq_files.name} {GOdaq_files.name} {LMMindaq_files.name} {LMMaxdaq_files.name} {Trigdaq_files.name}];
maindaq_files = setdiff({Alldaq_files.name},All, 'rows');
Jon I tried using what you suggested before but it wouldnt work because sometimes the filename changes so it's difficult to use a "constant" separator format such as \w-\w etc... Thanks a lot for your help though!

Categories

Find more on File Operations 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!