Use of CELLFUN instead of FOR loop
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a 21x40 cell array with each cell containing a vector of variable length. I want to merge all of the cells in each column. I can achieve this using a FOR loop such as
A = 21x40 cell array
for n = 1:40
merge = cat(2,A{:,n})
end
How can I do this with, for example, CELLFUN or in some other way without using a FOR loop? Thanks a lot for any help.
0 commentaires
Réponse acceptée
Azzi Abdelmalek
le 9 Juin 2013
Modifié(e) : Azzi Abdelmalek
le 9 Juin 2013
A=num2cell(rand(21,40)) % Example
out=arrayfun(@(x) cat(2,A{:,x}),1:size(A,2),'un',0)
2 commentaires
Jan
le 10 Juin 2013
This is a fast and short method. The "merge{n}= cat(2,A{:,n})" approach inside a loop is 50% faster.
Plus de réponses (1)
Azzi Abdelmalek
le 9 Juin 2013
for n = 1:40
merge = cat(2,A{:,n})
end
is the same then
merge = cat(2,A{:,40})
4 commentaires
Azzi Abdelmalek
le 9 Juin 2013
Modifié(e) : Azzi Abdelmalek
le 9 Juin 2013
Your for loop should be: (merge{n} instead of merge)
for n = 1:40
merge{n}= cat(2,A{:,n})
end
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!