简体   繁体   中英

Matlab Matrix Repeat Value

my matrix: e =

 1     2
 2     3
 3     3
 4     3
 5     2

i want to repeat value from first coloumn as much as number from the second coloumn in the same row. i want to make my matrix to be like: e =

 1     2
 1     2
 2     3
 2     3
 2     3
 3     3
 3     3
 3     3
 4     3
 4     3
 4     3
 5     2
 5     2
 thank you for your help...

You can use repelem to repeat the row indices and then grab those rows from e :

new_e = e(repelem(1:size(e,1), e(:,2)), :);

If you're using a MATLAB version prior to 2015a that doesn't have repelem , here's another way to do it:

spacing = cumsum([1; e(:,2)]);      % the rows of new_e where we change row values
row_indices(spacing) = 1;           % make a vector with these elements = 1
row_indices = cumsum(row_indices);  % convert to row indices, last index is invalid
new_e = e(row_indices(1:end-1), :); % select valid rows from e

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM