Newbie question - converting a vector into a cellarray of vectors

4 Ansichten (letzte 30 Tage)
I have a vector X and want a cell array C containing N copies of that vector. How do I do that?
Here is how I am doing it now:
X = 1:5; N = 3;
C = mat2cell( repmat( X, N, 1 ), ones( N, 1 ), size( X, 2 ) );
This just feels like something that should be a primitive - converting back & frth betweenmatrices and cellarrays in different ways.

Akzeptierte Antwort

Oleg Komarov
Oleg Komarov am 7 Jul. 2011
% To cell
C = repmat({X},N,1);
% To mat
cell2mat(C)
cat(1,C{:})

Weitere Antworten (1)

Jan
Jan am 8 Jul. 2011
More efficient, because shared data copies are created:
C = cell(N, 1);
C(:) = {X};
  2 Kommentare
Oleg Komarov
Oleg Komarov am 8 Jul. 2011
C(1:N) = deal({X}); Same behaviour?
Jan
Jan am 8 Jul. 2011
@Oleg: Same behaviour and equivalent speed.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Cell Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by