How to change values in an array based on certain rules?

조회 수: 1 (최근 30일)
Ryan Fedeli
Ryan Fedeli 2019년 3월 5일
답변: Yasasvi Harish Kumar 2019년 3월 6일
I have an array and I want to change it so that all entries are zero except each first appearing 1 and -1.
But also, the first nonzero entry needs to be a +1.
I've been trying to use a for loop with if statements to accomplish this, but I can't figure out what rules would be used.
The result should be this:
x = [-1 0 0 1 1 0 1 -1 -1 -1 0 1 1 1 0 0 1 -1 0 0 -1 1 0 0 -1 0] % change this array to...
xx= [ 0 0 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 -1 0 0 0 1 0 0 -1 0] % this
% ^ ^ ^ ^ ^ ^ ^
% | % all of these are the only ones that remain - they alternate between 1 and -1
% |
% and here the -1 from x is eliminated because there is no preceding +1
% the array x is randomly generated to be a -1, 0, or a 1
Any insight would be appreciated... thank you

채택된 답변

Yasasvi Harish Kumar
Yasasvi Harish Kumar 2019년 3월 6일
Hi,
Something like this should fix your problem.
f = 1;
for i = 1:length(x)
if x(i) == f
xx(i) = f;
f = -f;
else
xx(i) = 0;
end
end
Regards

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by