How to change values in an array based on certain rules?
    3 views (last 30 days)
  
       Show older comments
    
    Ryan Fedeli
 on 5 Mar 2019
  
    
    
    
    
    Answered: Yasasvi Harish Kumar
      
 on 6 Mar 2019
            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
0 Comments
Accepted Answer
  Yasasvi Harish Kumar
      
 on 6 Mar 2019
        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 Comments
More Answers (0)
See Also
Categories
				Find more on Operators and Elementary Operations in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
