Insert zeros in a vector

3 views (last 30 days)
Deepti Ranjan Majhi
Deepti Ranjan Majhi on 20 Jan 2017
Edited: Jan on 20 Jan 2017
Let's assume my vector is
A = [1 2 3 7 9 10 45 93 122 150]';
I want to put zeros in between these numbers.
A = [1 2 3 0 0 0 7 0 9 10 0 0 .....]';

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 20 Jan 2017
Edited: Andrei Bobrov on 20 Jan 2017
One of ways:
A = [1 2 3 7 9 10 45 93 122 150]'
ii = randi(3,numel(A),1);
t = cumsum(ii) < numel(A);
ii = ii(t);
z = arrayfun(@(x)zeros(x,1),ii(1:end-1),'un',0);
C = mat2cell(A(1:sum(ii)),ii,1);
out = [C';[z',{[]}]];
out = cat(1,out{:});
  3 Comments
Deepti Ranjan Majhi
Deepti Ranjan Majhi on 20 Jan 2017
Thank you for reply. I sort out the problem.

Sign in to comment.

More Answers (1)

Jan
Jan on 20 Jan 2017
Edited: Jan on 20 Jan 2017
A = [1 2 3 7 9 10 45 93 122 150]';
B = zeros(150, 1);
Index = [true(1, numel(A)), false(1, numel(B) - numel(A)];
Index = Index(randperm(numel(Index));
B(Index) = A;
Now the result is filled at random places by zeros such that the total length is 150.
[EDITED] Easier:
A = [1 2 3 7 9 10 45 93 122 150]';
B = zeros(150, 1);
Index = randperm(numel(B), numel(A));
B(Index) = A;

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!