【问题标题】:Create overlapping and non-overlapping sliding windows in MATLAB在 MATLAB 中创建重叠和非重叠滑动窗口
【发布时间】:2017-07-06 04:04:08
【问题描述】:

我正在尝试从包含N 元素的数组Data 创建重叠和不重叠的数据块。如何为任何N 和任何blksze 正确形成Data 的子数组?以下代码用于非重叠块由于创建子块时元素数量超过而引发错误。比如让Data = [1,2,3,4,5,6],然后

  • 对于重叠的情况,我应该得到:块大小blksze = 2,我会得到block1 = [1,2], block2 = [2,3], block3 = [3,4], block4 = [4,5], block5 = [5,6]

  • 对于非重叠:块大小blksze = 2,我会得到block1 = [1,2], block2 = [3,4], block3 = [5,6]

代码 sn-p

N= 100;
n = 4;
Data = randi([1 n],1,N);
blksze = 10;
Nblocks = N / blksze;
counter = 1;
for i = 1 : Nblocks
    block{i} = Data(counter : counter + blksze - 1);
    counter = blksze + 1;
end

【问题讨论】:

    标签: arrays matlab sliding-window


    【解决方案1】:

    要提取重叠块,我建议使用bsxfun 来创建索引和子集矩阵,而非重叠块您可以简单地使用reshape

    重叠

    ind = bsxfun(@plus, (1 : blksze), (0 : numel(Data) - blksze).');
    

    这种方法的优点是它使用广播为每个块生成正确的索引。因此,这将是一个 2D 矩阵,其中每一行是获取右块数据所需的索引,列数由块大小决定。

    不重叠

    ind = reshape(1 : numel(Data), [], numel(Data) / blksze).';
    

    这只是简单地重塑向量,使每一行都是一组唯一的索引,增加 1,列数由块大小决定。


    最后,只需索引Data 即可获得所需内容:

    blocks = Data(ind);
    

    这是一个使用 6 个元素的运行示例:

    >> rng(123); Data = rand(1, 6)
    
    Data =
    
        0.6965    0.2861    0.2269    0.5513    0.7195    0.4231
    

    块大小为 2 或 blksze = 2,这是重叠和非重叠的结果:

    >> blksze = 2;
    >> indno = reshape(1 : numel(Data), [], numel(Data) / blksze).';
    >> indo = bsxfun(@plus, (1 : blksze), (0 : numel(Data) - blksze).');
    >> blockno = Data(indno)
    
    blockno =
    
        0.6965    0.2861
        0.2269    0.5513
        0.7195    0.4231
    
    >> blocko = Data(indo)
    
    blocko =
    
        0.6965    0.2861
        0.2861    0.2269
        0.2269    0.5513
        0.5513    0.7195
        0.7195    0.4231
    

    警告

    此代码不会进行错误检查,因为我们假设有足够的块来捕获您的所有数据。如果Data中的元素数量与块大小不兼容,以捕获所有相同大小的块中的所有数据,则索引时会出错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      相关资源
      最近更新 更多