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

 채택된 답변

Andrei Bobrov
Andrei Bobrov 2017년 1월 20일
편집: Andrei Bobrov 2017년 1월 20일

0 개 추천

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

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

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jan
Jan 2017년 1월 20일
편집: Jan 2017년 1월 20일

0 개 추천

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;

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2017년 1월 20일

편집:

Jan
2017년 1월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by