I want to shift vector values one by one to the left
33 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
John D'Errico
el 30 de Ag. de 2022
PLEASE STOP POSTING MULTIPLE TIMES. You have posted the exact same question now three times. One I have now closed.
Respuestas (4)
Chunru
el 30 de Ag. de 2022
num=[1 1 1 0 0 0 0 0]
for i=1:3
num = circshift(num, -1)
end
0 comentarios
Abderrahim. B
el 30 de Ag. de 2022
What about this:
num = [1 1 1 1 1 0 0 0 0 0] ;
for ii = 1: nnz(num)
num = circshift(num, -1)
end
4 comentarios
Abderrahim. B
el 30 de Ag. de 2022
if you only need the last vector,then use sort function.
sort(yourVectorHere)
Bruno Luong
el 30 de Ag. de 2022
Editada: Bruno Luong
el 30 de Ag. de 2022
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)
0 comentarios
Bruno Luong
el 30 de Ag. de 2022
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)
0 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!