Clear Filters
Clear Filters

Create for loop to simplify code and output arrays

1 view (last 30 days)
I have this code:
len1 = a(4);
st1 = 5; % starting index for first channel
y1 = a(st1: st1+len1-1);
len2 = a(st1+len1);
st2 = st1+len1+1; % starting index for second channel
y2 = a(st2: st2+len2-1);
len3 = a(st2+len2);
st3 = st2+len2+1; % starting index for third channel
y3 = a(st3: st3+len3-1);
len4 = a(st3+len3);
st4 = st3+len3+1;% starting index for fourth channel
y4 = a(st4: st4+len4-1);
This is taking data from a text file and outputting different values for y (i.e y2 = 1524x1 double).
I know there's a simpler for loop I can do but I can't seem to get it right! Can you help?

Accepted Answer

Esme Stanford-Durkin
Esme Stanford-Durkin on 28 Apr 2020
Solution, array to cell needed:
ch = a(1);
len = a(4);
st = 5 ;
y{1} = a(st: st+len-1);
for i = 2 : ch
len(i) = a(st(i-1) + len(i-1 ));
st(i) = st(i-1) + len(i-1) + 1 ;
y{i} = a(st(i):st(i)+len(i)-1 );
end

More Answers (2)

Saurav Roy
Saurav Roy on 28 Apr 2020
Hey !
I think this is somwhat close to what you are looking for,
num = length(a);
len = a(4);st = 5;
y = a(st: st+num-1);
for i = 2 : num
len(i) = a(st(i-1) + len(i-1));
st(i) = st(i-1) + len(i-1) + 1;
y(i) = a(st(i):st(i)+len(i)-1);
end
  4 Comments
Esme Stanford-Durkin
Esme Stanford-Durkin on 28 Apr 2020
a is an array containing all the data from the text file
a(1) is the number of 'channels' (number of y outputs), so in my initial code there would be 4 channels
a(4) contains the value of the length of the data
Then a(5) - a(5 + len-1) is the data
Then the next 'channel' will start.
If this makes sense

Sign in to comment.


Esme Stanford-Durkin
Esme Stanford-Durkin on 28 Apr 2020
a is an array containing all the data from the text file
a(1) is the number of 'channels' (number of y outputs), so in my initial code there would be 4 channels
a(4) contains the value of the length of the data
Then a(5) - a(5 + len-1) is the data
Then the next 'channel' will start.
If this makes sense

Community Treasure Hunt

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

Start Hunting!