Row-wise concatenation of a cell array
Afficher commentaires plus anciens
Apologies for what may be a banal question, but I'm having trouble with the following:
I'm writing code that involves tracking paths and filenames for 1-100 files, which I'm doing with a 2 X N (N = number of files) cell array, where the first row contains the path(s) and the second row contains the filename(s). As entries in the same column represent a single file, I need a way to concatenate every pair of entries (:,N) to assemble full paths in another cell array. Any suggestions on how best to do this (without loops, which I'm trying to avoid, unless I shouldn't be)?
Thanks!
-Davis
Thanks!
Réponses (1)
Andrei Bobrov
le 22 Déc 2011
try this code, I can not test it, now do not have access to MATLAB
data - your cell array (size 2xN)
out = arrayfun(@(i1)fullfile(data{:,i1}),(1:size(data,2))','un',0);
5 commentaires
Davis
le 22 Déc 2011
Andrei Bobrov
le 22 Déc 2011
explaining with my english? :)
better please read:
about 'fullfile' http://www.mathworks.se/help/techdoc/ref/fullfile.html
about 'arrayfun' http://www.mathworks.se/help/techdoc/ref/arrayfun.html
about 'function_handle (@)' http://www.mathworks.se/help/techdoc/ref/function_handle.html
Daniel
le 2 Avr 2020
I created a repository in Github based on this solution. Ideally it should also account for more than 2 dimensions.
Neon Argentus
le 15 Mai 2020
For a data cell containing {'File_name', 'File_extention'} which is Nx2, then you can create a single-column cell {'File_name.File_extention'} at Nx1 with
= arrayfun(@(row)[(data{row,:})],(1:size(data,1))','UniformOutput', false);
Sedo
le 4 Fév 2023
Thank you this worked for me!
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!