# Insert elements into vector

3 views (last 30 days)
NA on 31 Oct 2020
Edited: Stephen23 on 6 Nov 2020
I have a vector 'index' and 'val_index'
index = [1;2;4;5;6;8;9];
index_val = [11;25;3;4;56;7;9];
I remove indices 3 and 7 from the 'index' . The 'removed_index' which I have is the cell array.
removed_index = {[7],[3]};
removed_val = {[1.1],[3.2]};
I want to insert removed indices and the values to the 'index'
Result should be:
index_all = [1;2;3;4;5;6;7;8;9];
index_val_all = [11;25;3.2;3;4;56;1.1;7;9];

Stephen23 on 31 Oct 2020
index = [1;2;4;5;6;8;9];
index_val = [11;25;3;4;56;7;9];
removed_index = [7,3]; % simpler to use a numeric array
removed_val = [1.1,3.2]; % simpler to use a numeric array
Then all you need is:
idx = [index(:);removed_index(:)];
vec = [index_val(:);removed_val(:)];
vec(idx) = vec
idx(idx) = idx
Stephen23 on 6 Nov 2020
index = [1;4;5;8;9];
index_val = [11;3;4;56;7];
removed_index = [7,3]; % simpler to use a numeric array
removed_val = [1.1,3.2]; % simpler to use a numeric array
idx = [index(:);removed_index(:)];
vec = [index_val(:);removed_val(:)];
[idx,ids] = sort(idx); idx
idx = 7×1
1 3 4 5 7 8 9
vec = vec(ids)
vec = 7×1
11.0000 3.2000 3.0000 4.0000 1.1000 56.0000 7.0000