Create a new array everytime with the change of sign in an array

1 view (last 30 days)
I have an array A = [0 1 2 3 2 1 0 -1 -2 -2 -1 0 1 1.6 1.8 2 1 0 .... ], Now I want to create a new array everytime the sign changes in the array, it should look like
B = [0 1 2 3 2 1 0]
C = [-1 -2 -2 -1]
D = [0 1 1.6 1.8 2 1 0]
.
.
.
  2 Comments
Sri Vishnu Katreddi
Sri Vishnu Katreddi on 29 Apr 2022
Edited: Sri Vishnu Katreddi on 29 Apr 2022
0 can either take run of positives or run of negatives, In fact I am trying to create based on the negative sign.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 29 Apr 2022
Edited: Matt J on 29 Apr 2022
Download these files,
and then do like in the following:
A = [0 1 2 3 2 1 0 -1 -2 -2 -1 0 1 1.6 1.8 2 1 0];
G=groupConsec(A>=0);
output=groupFcn(@(x) {x}, A ,G); %return the groups as cell array elements,
%not separate variables
>> output{:}
ans =
0 1 2 3 2 1 0
ans =
-1 -2 -2 -1
ans =
0 1.0000 1.6000 1.8000 2.0000 1.0000 0

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!