how to find out the index of a cell array that cell contains my substring?
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rui Zhang
el 15 de Feb. de 2024
Comentada: Rui Zhang
el 16 de Feb. de 2024
My question is:
myCellArray = {'John','Mike','foo'};
substring = 'Jo'
Since myCellArray{1} contains "Jo', I expected the index = 1.
How to use cellfun to find the index of the element(s) in the cell array?
2 comentarios
Respuesta aceptada
Fangjun Jiang
el 15 de Feb. de 2024
Do you have to use cellfun()?
myCellArray = {'John','Mike','foo'};
substring = 'Jo'
find(contains(myCellArray,substring))
7 comentarios
Voss
el 15 de Feb. de 2024
myCellArray = {[],'John','','Mike','foo'};
substring = 'Jo';
% replace non-char entries with empty chars:
fixedCellArray = myCellArray;
fixedCellArray(~cellfun(@ischar,fixedCellArray)) = {''};
myIndex = find(contains(fixedCellArray,substring))
Más respuestas (1)
Aquatris
el 15 de Feb. de 2024
Editada: Aquatris
el 15 de Feb. de 2024
myCellArray = {'John','Mike','foo','Jonathan','Stuart','Martha','Jo'};
substring = 'Jo';
idx = find(cellfun(@(x) contains(x,substring),myCellArray,'UniformOutput',true))
myCellArray(idx)
4 comentarios
Aquatris
el 15 de Feb. de 2024
Editada: Aquatris
el 16 de Feb. de 2024
Not the cleaness solution but I think you are looking for something like this then:
myCellArray = {[] 'John','Mike',[],'foo','Johanna','Mark',[];...
0 10 11 20 30 40 50 60;...
1 12 13 22 60 70 80 20;...
2 14 15 18 40 20 10 20;...
3 15 20 25 30 40 50 60};
substring = 'Jo';
idx_empty = cellfun(@isempty,myCellArray(1,:)); % find empty cells in first row
myCellArray_Modified = myCellArray(1,:); % create replica of first row of myCellArray
myCellArray_Modified(idx_empty) = {-1}; % replace empty cells with -1 double
idx = find(cellfun(@(x) contains(string(x),substring),myCellArray_Modified(1,:),'UniformOutput',true));
idx % idx is the column numbers of interest
myCellArray(:,idx)
Ver también
Categorías
Más información sobre Matrix Indexing 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!