Info

この質問は閉じられています。 編集または回答するには再度開いてください。

'How to' Matrix

1 回表示 (過去 30 日間)
Hello kity
Hello kity 2012 年 12 月 12 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
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 件のコメント
Hello kity
Hello kity 2012 年 12 月 12 日
I meant shifting, shifting the 1 on the 4th row to the 1st.
Jan
Jan 2012 年 12 月 12 日
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?

回答 (4 件)

Walter Roberson
Walter Roberson 2012 年 12 月 12 日
編集済み: Walter Roberson 2012 年 12 月 12 日
Have you considered circshift() up by 4 rows?

Azzi Abdelmalek
Azzi Abdelmalek 2012 年 12 月 12 日
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 件のコメント
Hello kity
Hello kity 2012 年 12 月 12 日
Would you comment this code step by step, I dont get how you do this...
thank you
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 12 月 12 日
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 2012 年 12 月 12 日
編集済み: Andrei Bobrov 2012 年 12 月 12 日
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 件のコメント
Hello kity
Hello kity 2012 年 12 月 12 日
thank you,
afterwards i use Q=out(:,5);

Jan
Jan 2012 年 12 月 12 日
編集済み: Jan 2012 年 12 月 12 日
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