How do I insert data into new format based on row positions?

1 view (last 30 days)
Hi All - i'm having difficulty getting my data in the right format and wondered if you could help?
% Here is my data
data = [8; 7; 1; 5]
% I have the row positions of where the data sits in the desired format
datarowpositions = [0; 0; 0; 4; 0; 1; 0; 2; 0; 0; 3; 0]
% This is how I would like the data to be moved into
desired = [0; 0; 0; 5; 0; 8; 0; 7; 0; 0; 1; 0]
Thank you so much for your time.

Accepted Answer

Stephen23
Stephen23 on 7 Jan 2021
Edited: Stephen23 on 7 Jan 2021
data = [8; 7; 1; 5];
datarowpositions = [0; 0; 0; 4; 0; 1; 0; 2; 0; 0; 3; 0];
desired = datarowpositions;
desired(datarowpositions~=0) = data(nonzeros(datarowpositions))
desired = 12×1
0 0 0 5 0 8 0 7 0 0
... more rows here

More Answers (0)

Community Treasure Hunt

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

Start Hunting!