How to index a cell array of character vectors?
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello everyone,
I have problem in my code. Suppose I have 'c' which is a cell array of character vectors of dimension N by 1. I would like to index each element of 'c' with a given pair of 'si' (start index) and 'ei' (end index), which can be different for any element of 'c'. 'si' and 'ei' are both N by 1 numerical vector or cell array containg numerical elements.
I would like a function to use in cellfun like in this piece of code: newc = cellfun(@tbd,c,si,ei,'UniformOutput',false). 'newc' of course is a new cell array of character vectors , where the ith element would be like: newc{i} = x{i}(si{i}:ei{i});
I can create a function tbd (to be determined) by myself but I think that there are already more efficient and native way to do it.
Thanks for your help!
0 commentaires
Réponse acceptée
Voss
le 1 Mar 2022
Modifié(e) : Voss
le 1 Mar 2022
% If si and ei are cell arrays containing scalar indices:
c = {'indexing'; 'a cell array'; 'of character'; 'vectors'};
si = {1; 3; 4; 5};
ei = {5; 6; 7; 6};
newc = cellfun(@(x,y,z)x(y:z),c,si,ei,'UniformOutput',false)
% If si and ei are numeric vectors:
c = {'indexing'; 'a cell array'; 'of character'; 'vectors'};
si = [1; 3; 4; 5];
ei = [5; 6; 7; 6];
newc = arrayfun(@(x,y,z)x{1}(y:z),c,si,ei,'UniformOutput',false)
% or:
newc = cellfun(@(x,y,z)x(y:z),c,num2cell(si),num2cell(ei),'UniformOutput',false)
2 commentaires
Stephen23
le 1 Mar 2022
Why create cell array and transpose?:
si = {1,3,4,5}.';
get rid of the superfluous transpose:
si = {1;3;4;5};
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing 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!