arrays - Reordering a vector in Matlab? -


i have vector in matlab b of dimension nx1 contains integers 1 n in order, e.g. n=6 b=(2;4;5;1;6;3).

i have vector a of dimension mx1 m>1 contains same integers in ascending order each 1 repeated arbitrary number of times, e.g. m=13 a=(1;1;1;2;3;3;3;4;5;5;5;5;6).

i want c of dimension mx1 in integers in a reordered following order in b. in example, c=(2;4;5;5;5;5;1;1;1;6;3;3;3)

one approach ismember , sort -

[~,idx] = ismember(a,b) [~,sorted_idx] = sort(idx) c = b(idx(sorted_idx)) 

if one-liners, bsxfun -

c = b(nonzeros(bsxfun(@times,bsxfun(@eq,a,b.'),1:numel(b)))) 

Popular posts from this blog

c# - ODP.NET Oracle.ManagedDataAccess causes ORA-12537 network session end of file -

matlab - Compression and Decompression of ECG Signal using HUFFMAN ALGORITHM -

utf 8 - split utf-8 string into bytes in python -