Copy cells a variable number of times
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
EldaEbrithil
el 2 de Sept. de 2020
Comentada: EldaEbrithil
el 2 de Sept. de 2020
Hi all
i have this code
for i=1:length(a)
C(i)=repmat(b(i),1,a(i))
end
where b is a cell array
16x5 double
16x5 double
13x5 double
and a is an array
[101,17,1]
i want to copy the first cell 101 times, the second cell, 17 times and last cell only one time, but using the upper code i can't do that...any idea?
Thank you for the help!!
Regards
4 comentarios
Stephen23
el 2 de Sept. de 2020
Editada: Stephen23
el 2 de Sept. de 2020
"the cell and the matrix inside it"
That seems very unusual. So given this cell array:
C = {X,Y,Z}
you want to repmat both the cells and the matrices to get this:
{[X,X,X...X],[X,X,X,...X],...,[X,X,X,...X],[Y,Y,Y,...Y],[Y,Y,Y,...Y],...,[Y,Y,Y,...Y],[Z,Z,Z,...,Z],...,[Z,Z,Z,...Z]}
I would have expected either of these:
{X,X,...,X,Y,Y,...Y,Z,Z,...Z} % repmat the cells themselves
{[X,X,..,X],[Y,Y,...,Y],[Z,Z,...,Z]} % repmat the arrays inside the cells
EldaEbrithil
el 2 de Sept. de 2020
Editada: EldaEbrithil
el 2 de Sept. de 2020
Respuesta aceptada
David Hill
el 2 de Sept. de 2020
for i=1:length(a)
C{i}=repmat(b{i},1,a(i));
end
4 comentarios
David Hill
el 2 de Sept. de 2020
count=1;
for i=1:length(a)
for k=1:a(i)
C{count}=b{i};
count=count+1;
end
end
Más respuestas (1)
Steven Lord
el 2 de Sept. de 2020
To replicate the cells you can use repmat or repelem depending on whether you want ABCABCABCABC... or AAAABBBBCCCC ... In other words, how do you want the replicates to be collated? Suitable for stapling into packets or suitable for making stacks of loose handouts for students to select from piles?
X = {1:3, 4:7, [8 9]}; % A is 1:3, B is 4:7, C is [8 9]
Y1 = repmat(X, [1 2]) % ABCABC
Y2 = repelem(X, [2 3 4]) % AABBBCCCC
Or do you want to replicate the contents of the cells?
X2 = {repmat(1:3, [2 1]), repmat(4:7, [3 3]), repmat([8 9], 1, 4)}
% X2 contains a 2-by-3, a 3-by-12, and a 1-by-8
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!