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 .....]';

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 20 Jan. 2017
Bearbeitet: Andrei Bobrov am 20 Jan. 2017

0 Stimmen

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 Kommentare

Deepti Ranjan Majhi
Deepti Ranjan Majhi am 20 Jan. 2017
Thank you for your reply. But, I want a vector of length 150X1.
Andrei Bobrov
Andrei Bobrov am 20 Jan. 2017
Please!
Deepti Ranjan Majhi
Deepti Ranjan Majhi am 20 Jan. 2017
Thank you for reply. I sort out the problem.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jan
Jan am 20 Jan. 2017
Bearbeitet: Jan am 20 Jan. 2017

0 Stimmen

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;

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by