finding sub sequences of a data set
    6 views (last 30 days)
  
       Show older comments
    
clc
clear
ts = xlsread('SwedishLeaf_TRAIN.xlsx');
l=length(ts);
 for i = 1:500
     p=ts(i,:)
          for ii = 1:129
    subSequence(ii,:) = p((ii-1)*30+ 1:ii*30);
end
I used the above code for finding the subsequences,but it not working.How can I find the subsequence of this.
4 Comments
  Star Strider
      
      
 on 8 Nov 2019
				You need to describe in detail what your data are, and what you want to do.  
Answers (1)
  Ajay Pattassery
    
 on 11 Nov 2019
        I assume you want to extract a sub-vector of length 30 from each row. But the total length of the column is 129 which is not divisible by 30. Hence the 5th sub-vector will take 21 elements from the second row and it goes on.
subsequence = (reshape(ts',30,[]))'
If you have a constraint to keep the column length 129 and wish to have sub-parts elements from the same row together, you could split the matrix into two parts. One exactly divisible by 30.
ts1 = ts(:,1:120);
Subsequence1 = (reshape(ts1',30,[]))';
Subsequence2 = ts(:,121:end);
Here Subsequence1 will be 2000x30 and Subsequence2 will have the remaining elements of each row.
9 Comments
  Walter Roberson
      
      
 on 12 Nov 2019
				buffer() from the signal processing toolbox is useful. But otherwise mat2cell()
L = length(Ts1);
BL = 30;
if mod(L, BL)
    Sequences = cell2mat(Ts1, 1, [BL * ones(1, floor(L/BL)), mod(L,BL)]);
else
    Sequences = cell2mat(Ts1, 1, BL * ones(1, floor(L/BL)));
end
See Also
Categories
				Find more on Startup and Shutdown 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!



