How to repeat rows of matrix?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I have a matrix and a vector indicating how many times the corresponding lines in the matrix should appear. I'd like to turn this into a single matrix.
For example:
M= 1 2 V=1
2 3 2
4 3 1
2 4 2
should become
M =1 2
2 3
2 3
4 3
2 4
2 4
Does anyone have advice on how to accomplish this? Many thanks.
0 Kommentare
Akzeptierte Antwort
Matt Kindig
am 13 Jun. 2013
Bearbeitet: Matt Kindig
am 13 Jun. 2013
One way:
f = @(k) repmat(M(k,:), round(V(k)), 1);
MM = cell2mat(arrayfun(f, (1:length(V))', 'UniformOutput', false));
0 Kommentare
Weitere Antworten (4)
Roger Stafford
am 13 Jun. 2013
Here's yet another possibility:
p = accumarray(cumsum([1;v]),1);
M = M(cumsum(p(1:end-1)),:);
0 Kommentare
Azzi Abdelmalek
am 13 Jun. 2013
out=cell2mat(arrayfun(@(x) repmat(M(x,:),V(x),1),[1:numel(V)]','un',0))
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical 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!