Row-wise concatenation of a cell array

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
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
Davis le 22 Déc 2011
Thanks a lot, that worked! Would you mind explaining how this works?
Andrei Bobrov
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
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.
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
Sedo le 4 Fév 2023
Thank you this worked for me!

Connectez-vous pour commenter.

Catégories

Produits

Question posée :

le 22 Déc 2011

Commenté :

le 4 Fév 2023

Community Treasure Hunt

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

Start Hunting!

Translated by