finding sub sequences of a data set
이전 댓글 표시
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
Star Strider
2019년 11월 8일
How do you define ‘subsequence’?
Silpa K
2019년 11월 8일
Star Strider
2019년 11월 8일
You need to describe in detail what your data are, and what you want to do.
Silpa K
2019년 11월 8일
답변 (1개)
Ajay Pattassery
2019년 11월 11일
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
Silpa K
2019년 11월 11일
Ajay Pattassery
2019년 11월 11일
편집: Ajay Pattassery
2019년 11월 11일
please post the error message you are getting when using
subsequence = (reshape(ts',30,[]))'
Note, the transpose operator " ' " used in the above code.
Also post the output of
size(ts)
Silpa K
2019년 11월 11일
Silpa K
2019년 11월 11일
Image Analyst
2019년 11월 11일
So what would you LIKE to do when you have only a partial set (not the full 30)?
Silpa K
2019년 11월 11일
Ajay Pattassery
2019년 11월 12일
1.So say your row comprises of 40 numbers ([1 2 . . . 40]), you want two subsequence.
Seq1 = [1 2 . . . 30] and Seq2 = [31 32 . . . 40], am I right?
2. You can not store the subsequence in a matrix as you were doing above since the subsequece length is not fixed. If the order of the subsequence does not matters you could try my second suggestion in the above answer. (Split the matrix into two, one with number of coulumns equals to mulitple of 30 and second matrix with remaining elements)
Walter Roberson
2019년 11월 12일
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
Silpa K
2019년 11월 12일
카테고리
도움말 센터 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!