Comparing cell arrays and creation of subfolders

2 vues (au cours des 30 derniers jours)
Amanda
Amanda le 23 Déc 2020
Dear Matlab Community,
I have a text file ("X") containing the name of my samples in one of the columns (column "samples") and, on the other hand, a folder with a large number of text files with thousands of different names. I would like to select the files on that folder by comparing their names with the names on my text file.
So far, this is what I have...But It is (obviously) not working, and I don't know how to proceed to select the files I'm interested in and put them into a new subfolder.
direct = uigetdir('/Users/xxx/Documents/MATLAB/')
cd(direct)
readtable 'X.txt' %this is my text file, which I converted into a table
X = ans
X_names = {X.samples} %I've converted the "samples" column into a cell array (for the comparison)
d_names = dir('*.txt') %then I got all the text files from my folder as an structured array
%I wanted to compare the names of my X file (X_names) with the names of the text files on my folder...
%and save the "matching" files into the variable named "real_samples". After that, I need to select these text files...
% and put them into a new folder (remaining on the same directory). What can I do?
if isequal(d_names.name{k}, ind_vit.names{i})
real_samples =(d_names{k});
else
unclassified =(d_names{k});
end

Réponses (1)

Stephen23
Stephen23 le 23 Déc 2020
A much more robust approach using absolute filenames (rather than buggy and slow CD) and function syntax rather than outdated command syntax:
P = uigetdir('/Users/xxx/Documents/MATLAB/');
X = readtable(fullfile(P,'X.txt'));
A = lower({X.samples});
S = dir(fullfile(P,'*.txt'));
B = lower({S.name});
Y = ismember(B,A);
R = B(Y); % real
U = B(~Y); % unclassified
I do not understand what "I need to select these text files and put them into a new folder (remaining on the same directory)" means, but perhaps MOVEFILE does what you want (you will probably need a loop).

Catégories

En savoir plus sur File Operations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by