How to repeat a row by a certain factor
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Jessica
il 26 Apr 2015
Commentato: Mohammad Abouali
il 26 Apr 2015
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.
0 Commenti
Risposta accettata
Mohammad Abouali
il 26 Apr 2015
Modificato: Mohammad Abouali
il 26 Apr 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 Commento
Mohammad Abouali
il 26 Apr 2015
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
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Cell Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!