Generating sequences from data
3 views (last 30 days)
Show older comments
Mahendran Subramanian
on 25 Sep 2019
Commented: Mahendran Subramanian
on 26 Sep 2019
Hi All,
I have a data set (x1, x2, x3, x4, x5, x6, x7, .... xn) from which I want to generate sequences like
x1, x2, x3, x4, x5
x2, x3, x4, x5, x6
x3, x4, x5, x6, x7
x4, x5, x6, x7, x8
..................... xn
Thank you
0 Comments
Accepted Answer
Andrei Bobrov
on 26 Sep 2019
xy = [5 14
6 16
1 16
6 11
4 16
1 16
2 13];
n = 5;
[m,k] = size(xy);
out = xy(reshape(hankel(1:n,n:m),1,n,[]) + m*(0:k-1)')
5 Comments
Andrei Bobrov
on 26 Sep 2019
XY = readtable('XY.xlsx');
xy = XY{:,:};
n = 5;
[m,k] = size(xy);
out = xy(reshape(hankel(1:n,n:m),1,n,[]) + m*(0:k-1)');
More Answers (2)
John D'Errico
on 25 Sep 2019
So, given a vector x, of length n, you want to create the array with rows that are the sub-sequences of length 5? The result will be a (n-4) x 5 array.
A trivial solution would just concatenate columns to create the array. However, that would not be easily fixed if you then wnted to create sub-sequences of length 6 or 4.
So far better is to create an index array, then use that to index into the vector.
n = length(x);
m = 5;
ind = (1:n-m+1)' + (0:m-1);
A = x(ind);
This works for any length vector, and any size of sub-sequences.
It does use a feature of MATLAB that was introduced in R2016b, to create the index array ind. Earlier releases might use this instead:
ind = bsxfun(@plus,(1:n-m+1)',0:m-1);
4 Comments
Stephen23
on 26 Sep 2019
"I need the data as separate sequences for running through various analyses."
Dwarka Sahu
on 25 Sep 2019
for i=1:5
sprintf('%g, %g, %g, %g, %g',i, i+1, i+2, i+3, i+4)
end
3 Comments
Dwarka Sahu
on 26 Sep 2019
For the first sequence of (nx2)
for i=1:5
sprintf('x%g, y%g', i, i)
end
For the next set of sequence of (2x5)
for i=1:5
sprintf('x%g, x%g, x%g, x%g, x%g', i, i+1,i+2,i+3,i+4)
sprintf('y%g, y%g, y%g, y%g, y%g', i, i+1,i+2,i+3,i+4)
end
See Also
Categories
Find more on Common Weakness Enumeration (CWE) 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!