Putting Consecutive numbers into variables

5 views (last 30 days)
I data in this format a=[1;2;3;7;0;6;7;8;9;2;4;3;14;15;16;17;0;9;2];
what I need to accomplish is to put consecutive numbers into different variables...
in this case the expected outcome is a1=[1;2;3]; a2=[6;7;8;9]; a3=[14;15;16;17]; How do I
  1 Comment
Stephen23
Stephen23 on 4 Jul 2019
Edited: Stephen23 on 4 Jul 2019
"what I need to accomplish is to put consecutive numbers into different variables... "
Do NOT do this. Dynamically accessing variable names is one way that beginners force thmeselves into writing slow, complex, obfuscated, buggy code that is hard to debug:
Your code will be simpler and much more efficient if you simply use one container variable (e.g. a cell array, as my answer shows).

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 4 Jul 2019
Edited: Stephen23 on 4 Jul 2019
>> A = [1;2;3;7;0;6;7;8;9;2;4;3;14;15;16;17;0;9;2];
>> D = diff([false;diff(A(:))==1;false]);
>> F = @(b,e)A(b:e);
>> C = arrayfun(F,find(D>0),find(D<0),'UniformOutput',false);
>> C{:}
ans =
1
2
3
ans =
6
7
8
9
ans =
14
15
16
17
You can access the data in the cell array C using basic indexing:
  3 Comments
DARLINGTON ETAJE
DARLINGTON ETAJE on 18 Jul 2019
F = @(b,e)A(b:e);
Please explain what b and e mean
are they variables...I don't know how to use them for a new dataset
Walter Roberson
Walter Roberson on 18 Jul 2019
b and are are dummy parameter names, similar to
function result = F(b, e)
result = A(b, e)
end

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices 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!