Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

'How to' Matrix

1 visualizzazione (ultimi 30 giorni)
Hello kity
Hello kity il 12 Dic 2012
Chiuso: MATLAB Answer Bot il 20 Ago 2021
I have an array with 0 s and 1s.
Example a colomn, 0 ,0 ,0 ,0 , 1.
Now the 1 is on the 5th row, I want to raise that to the first row.
So, in my code i want all the ones to go 4 steps up...
sounds easy, but how :) ?
  5 Commenti
Hello kity
Hello kity il 12 Dic 2012
I meant shifting, shifting the 1 on the 4th row to the 1st.
Jan
Jan il 12 Dic 2012
Thanks for the clarification, Student. And what happens on the right margin? Is the result shorter, filled with zeros or ones or with the value of the last element?

Risposte (4)

Walter Roberson
Walter Roberson il 12 Dic 2012
Modificato: Walter Roberson il 12 Dic 2012
Have you considered circshift() up by 4 rows?

Azzi Abdelmalek
Azzi Abdelmalek il 12 Dic 2012
A=[0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1]
for k=5:length(A)
if A(k)
b=A(k-4:k-1);
A(k-4)=1
A(k-4+1:k)=b
end
end
  2 Commenti
Hello kity
Hello kity il 12 Dic 2012
Would you comment this code step by step, I dont get how you do this...
thank you
Azzi Abdelmalek
Azzi Abdelmalek il 12 Dic 2012
A=[0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1]
for k=5:length(A)
if A(k) % If A(k) is equal to 1
b=A(k-4:k-1); % store value from k-4 to k-1 in b
A(k-4)=1 % replace value at k-1 by 1
A(k-4+1:k)=b % shift value stored in b
end
end

Andrei Bobrov
Andrei Bobrov il 12 Dic 2012
Modificato: Andrei Bobrov il 12 Dic 2012
other way:
a - your vector - row (eg: [0 0 0 0 1])
n = numel(a);
out = a(hankel(1:n,[n,1:n-1]));
or
out = hankel(a,circshift(a,[0 1]));
  1 Commento
Hello kity
Hello kity il 12 Dic 2012
thank you,
afterwards i use Q=out(:,5);

Jan
Jan il 12 Dic 2012
Modificato: Jan il 12 Dic 2012
Some ideas:
x = [0, 0, 0, 0, 1];
index = find(x, 1, 'first');
y1 = x(index:end);
y2 = [x(index:end), zeros(1, index - 1)];
y3 = [x(index:end), ones(1, index - 1)];
y4 = [x(index:end), repmat(x(end), 1, index - 1)];
y5 = [x(index:end), x(1:index - 1)];

Community Treasure Hunt

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

Start Hunting!

Translated by