Putting NULLs in between the string array.

1 view (last 30 days)
MakM
MakM on 30 Mar 2022
Commented: MakM on 30 Mar 2022
I have string array A={'a','b','c','d','e'}, and index vector index=[1,3,5]. I want to put NULL values at this location and shift other values. For example my output should be like this: Output={[],'a','b',[],'c','d',[],'e'}. How can I do that.

Accepted Answer

Simon Chan
Simon Chan on 30 Mar 2022
Hope I understand it correctly, try this:
A={'a','b','c','d','e'};
index=[1,3,5];
newindex = index+(0:length(index)-1);
N = length(A)+length(index);
Output = repelem({''},1,N);
Output(~ismember(1:N,newindex))=A
Output = 1×8 cell array
{0×0 char} {'a'} {'b'} {0×0 char} {'c'} {'d'} {0×0 char} {'e'}
  4 Comments
MakM
MakM on 30 Mar 2022
Thanks for the answer. Yes this is what I exactly want :)

Sign in to comment.

More Answers (1)

Mathieu NOE
Mathieu NOE on 30 Mar 2022
hello
here you are
A={'a','b','c','d','e'};
index=[1,3,5];
%% main code
ll = numel(A)+numel(index);
index_comp = (1:ll);
index2 = index + (0:numel(index)-1);
index_comp(index2) = [];
Output = cell(1,ll);
Output(index_comp) = A
  1 Comment
MakM
MakM on 30 Mar 2022
Hey..
It is not working correct in the case if I want to put NULL on two consective values, for example if the index is [1,2,3,5], then not working correct.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by