finding sub sequences of a data set

7 次查看(过去 30 天)
Silpa K
Silpa K 2019-11-8
评论: Silpa K 2019-11-12
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
Star Strider 2019-11-8
You need to describe in detail what your data are, and what you want to do.
Silpa K
Silpa K 2019-11-8
I attached data set.I need to split each row.Each 30 points I need to separate from each row.

请先登录,再进行评论。

回答(1 个)

Ajay Pattassery
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 个评论
Walter Roberson
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
Silpa K 2019-11-12
I used this in below code,Iam getting errors.Please help me
ts = xlsread('ArrowHead_TRAIN.xlsx');
l=length(ts);
for i = 1:24
p=ts(i,:)
fa = movstd(p,20,1);
secarray=movstd(fa,20,1) ;
k=maxk(secarray,10);
mpt=find(p);
mp=p(mpt(round(numel(mpt)/2)));
G=min(abs(mp-k));
[~,ii] = min(abs(p(:) - k(:)'));
out = p(unique(ii));
L = length(p);
BL = 30;
if mod(L, BL)
Sequences = cell2mat(p, 1, [BL * ones(1, floor(L/BL)), mod(L,BL)]);
else
Sequences = cell2mat(p, 1, BL * ones(1, floor(L/BL)));
end
A = [];
A = [];
for ii = 1:length(SubSequences)
if any(ismember(Subsequences,out))
if (k-mp<=G+l/2)
A{end+1} = Subsequences;
end
end
end
disp(aa);
Z=Subsequences;
idx = p(1:1);
q=[idx Z];
data = q;
cellReference = sprintf('A%d', i);
xlswrite('swetrain.xlsx', data, 1, cellReference);
end

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by