创建元素数组的非重叠拆分

Posted

技术标签:

【中文标题】创建元素数组的非重叠拆分【英文标题】:Create non-overlapping split of an array of elements 【发布时间】:2020-06-20 18:48:31 【问题描述】:

我有一个数据数组X,其中包含N及时记录的元素数量。所以元素数组代表一个时间序列。我想拆分时间序列以创建固定长度L=500 的非重叠序列。这可以被认为是窗口大小。手动操作非常繁琐,我在下面尝试这样做。还有一个问题是X 中的元素可以有不同的长度,即N 可以有90000 个元素,然后又可以有1400 个元素。但是N >L。如何以优雅的方式为所有不同的X 创建长度为L 的序列,适用于所有X 的长度?这就是我试图做的,但在计算中迷失了方向。应感谢帮助。

N = 90000;  %this varies for different data X

L = 500; % this is fixed
X = rand(N,1);
nSplits = N/L;

%Worked out example
X1 = X(1:L,:);
X2 = X(L+1:2L,:);
X3 = X(2L+1:2L+1+L,:); %AND SO ON TILL nSplit number of data vectors are created from X

【问题讨论】:

【参考方案1】:

您可以使用mat2cell 来拆分您的向量。

N = 9023;  %this varies for different data X
L = 500; % this is fixed
X = rand(N,1);
nSplits = ceil(N/L); % we need nSplit segments
sz=L*ones(nSplits,1); % assume all are full, sizes for the segments
sz(end)=N-(nSplits-1)*L %Fix size of last one, in case less than L are left over
Y=mat2cell(X,sz); %Split it

【讨论】:

以上是关于创建元素数组的非重叠拆分的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据框拆分为与 R 大小相同的元素,由另一个大小重叠,保留每个元素?

基于索引的非重叠滑动窗口

输出 可重叠元素数组的从小到大排列

浅析CSS——元素重叠及position定位的z-index顺序

三维矩阵的非重叠滑动窗和

vs的数组重叠了???