find the difference of two structure elements

73 visualizaciones (últimos 30 días)
Max Bernstein
Max Bernstein el 23 de Jul. de 2015
Respondida: Max Bernstein el 23 de Jul. de 2015
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!

Respuesta aceptada

Jos (10584)
Jos (10584) el 23 de Jul. de 2015
Editada: Jos (10584) el 23 de Jul. de 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 :-)

Más respuestas (3)

Jon
Jon el 23 de Jul. de 2015

Jon
Jon el 23 de Jul. de 2015

Max Bernstein
Max Bernstein el 23 de Jul. de 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!

Categorías

Más información sobre File Operations en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by