Azzera filtri
Azzera filtri

find() returns content of {1×0 double} cell array

2 visualizzazioni (ultimi 30 giorni)
fullfiles have a list of file paths, RAW has the substrings I like to search for in the file paths.
I want the output AllIndex to be indexes of those found files.
AllIndex={};
for k = 1 : length(RAW)
IndexRAW = strfind(fullfiles, char(RAW(k)));
Index = find(~(cellfun('isempty', IndexRAW)));
AllIndex{end+1}=Index
end
but my output is
AllIndex =
1×8 cell array
{1×0 double} {1×0 double} {1×0 double} {1×0 double} {1×0 double} {1×0 double} {1×0 double} {1×0 double}
its content shown in Editor as
[] [] [] [] [] [] [] []
Please help! Thanks!!
  3 Commenti
chlor thanks
chlor thanks il 15 Apr 2020
say my fullfiles is = {'\\path\143'} {'\\path\204'} {'\\path\450'}
RAW = {'450'} {'143'}
I want the output AllIndex to be = 3 1
Stephen23
Stephen23 il 15 Apr 2020
"Result of strfind is integer arrays but you are trying to use cellfun"
The MATLAB documentation states:
"If str is a cell array of character vectors or a string array, then strfind returns a cell array of vectors of type double."

Accedi per commentare.

Risposta accettata

darova
darova il 15 Apr 2020
What about simple for loops?
ffile = {'\\path\143' '\\path\204' '\\path\450'};
RAW = {'450' '143'};
allind = zeros(size(RAW));
for i = 1:numel(RAW)
for j = 1:numel(ffile)
if strfind(ffile{j},RAW{i})
allind(i) = j;
break;
end
end
end
allind
  4 Commenti
darova
darova il 15 Apr 2020
  • but for some reason it doesnt work with my (fullfiles 1×101 cell array and RAW 8×1 cell array)
Can you show? I don't believe
chlor thanks
chlor thanks il 17 Apr 2020
I cannot really do that... I am running out of ideas as well, but thanks for the alternatives

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by