How to repeat a row by a certain factor

I have this sample matrix:
A=[2 2 2; 3 3 3; 4 4 4];
I would like to multiply each row by a certain factor (in this specific case, the first by 2, the second by 1, and the third by 3) to generate:
A_New= 2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4
Does anyone have suggestions on how to do this? I tried:
B = repmat(A,[2 1 3],1)
but this created separate matrices.

 Respuesta aceptada

Mohammad Abouali
Mohammad Abouali el 26 de Abr. de 2015
Editada: Mohammad Abouali el 26 de Abr. de 2015
% Creating sample data
A=[2 2 2; 3 3 3; 4 4 4];
nRep=[2,1,3];
% Constructing A_New as instructed.
A_new=cell2mat(arrayfun(@(r) repmat(A(r,:),1,nRep(r)), ...
1:numel(nRep), ...
'UniformOutput',false));
% printing the results
fprintf('A=');
fprintf('%d ',A_new)
fprintf('\n');
Once you run it you get this:
A=2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4

1 comentario

To preserve the structure then do this:
A=[2 2 2; 3 3 3; 4 4 4];
nRep=[2,1,3];
A_new=cell2mat( arrayfun(@(r) repmat(A(r,:),nRep(r),1),(1:numel(nRep))','UniformOutput',false) )
A_new =
2 2 2
2 2 2
3 3 3
4 4 4
4 4 4
4 4 4
If this is answering your question, please accept the answer by choosing the green button on top

Iniciar sesión para comentar.

Más respuestas (1)

Jessica
Jessica el 26 de Abr. de 2015

0 votos

This is very helpful. Is there a way to preserve the structure so that it is in the format:
A_New=[2 2 2; 2 2 2; 3 3 3; 4 4 4; 4 4 4; 4 4 4];
Thanks!

Etiquetas

Preguntada:

el 26 de Abr. de 2015

Comentada:

el 26 de Abr. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by