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

 Risposta accettata

Andrei Bobrov
Andrei Bobrov il 20 Gen 2017
Modificato: Andrei Bobrov il 20 Gen 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 Commenti

Thank you for your reply. But, I want a vector of length 150X1.
Andrei Bobrov
Andrei Bobrov il 20 Gen 2017
Please!
Thank you for reply. I sort out the problem.

Accedi per commentare.

Più risposte (1)

Jan
Jan il 20 Gen 2017
Modificato: Jan il 20 Gen 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;

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by