I want to shift vector values one by one to the left

19 次查看(过去 30 天)
Hello everyone,
I have a binary vector with five 0 and three 1.
num=[1 1 1 0 0 0 0 0]
and I want to shift each 1 left, shift one value as
num=[1 1 0 1 0 0 0 0]
untill I get a complete shift of the vector values and printing of each vector shift
num=[0 0 0 0 0 1 1 1]
any helpfull code of the above program with nested for loop will be highly appreciated
Thanks
  2 个评论
John D'Errico
John D'Errico 2022-8-30
PLEASE STOP POSTING MULTIPLE TIMES. You have posted the exact same question now three times. One I have now closed.

请先登录,再进行评论。

回答(4 个)

Chunru
Chunru 2022-8-30
num=[1 1 1 0 0 0 0 0]
num = 1×8
1 1 1 0 0 0 0 0
for i=1:3
num = circshift(num, -1)
end
num = 1×8
1 1 0 0 0 0 0 1
num = 1×8
1 0 0 0 0 0 1 1
num = 1×8
0 0 0 0 0 1 1 1

Abderrahim. B
Abderrahim. B 2022-8-30
What about this:
num = [1 1 1 1 1 0 0 0 0 0] ;
for ii = 1: nnz(num)
num = circshift(num, -1)
end
num = 1×10
1 1 1 1 0 0 0 0 0 1
num = 1×10
1 1 1 0 0 0 0 0 1 1
num = 1×10
1 1 0 0 0 0 0 1 1 1
num = 1×10
1 0 0 0 0 0 1 1 1 1
num = 1×10
0 0 0 0 0 1 1 1 1 1
  4 个评论
Muhammad
Muhammad 2022-8-30
I already had an idea of shifting but it does not fullfill the requirement that i want.

请先登录,再进行评论。


Bruno Luong
Bruno Luong 2022-8-30
编辑:Bruno Luong 2022-8-30
Is it what you want?
num = [1 1 0 1 0 1 0 1 0 0];
j = find(num);
m = length(j);
l = (-m+1:0)+(length(num))-j;
q = sum(l)+1;
J = zeros(q,m);
i = 1;
J(i,:) = j;
for k=m:-1:1
for n=1:l(k)
i = i+1;
j(k) = j(k)+1;
J(i,:) = j;
end
end
I = repmat((1:q)',1,m);
B = accumarray([I(:) J(:)],1)
B = 20×10
1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1

Bruno Luong
Bruno Luong 2022-8-30
May be this?
num = [1 1 0 1 0 1 0 1 0 0];
j = find(num);
m = length(j);
J=repmat(j,m,1);
for i=m:-1:1
J(m-i+1:end,i) = length(num)+i-m;
end
J = [j; J];
I = repmat((1:m+1)',1,m);
B = accumarray([I(:) J(:)],1)
B = 6×10
1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by