You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中如何生成10000采样信号的所有1000采样点子集

如何获取所有连续重叠的采样点子集?

你遇到的问题是因为buffer(sig, 1000)默认采用无重叠的窗口分割——它的默认步长等于窗口大小(1000),所以每次直接跳到下一个不重叠的窗口,10000个点刚好分成10组。但如果要获取所有可能的连续子集,其实需要的是步长为1的滑动窗口,这样每一组和前一组重叠999个点,总共会有10000 - 1000 + 1 = 9001组。

解决方案(以MATLAB为例)

直接调整buffer函数的重叠参数即可。buffer的完整语法是buffer(x, n, p),其中:

  • n是窗口大小(这里是1000)
  • p是相邻窗口的重叠点数

要实现步长为1,重叠点数就是1000 - 1 = 999,所以代码改成:

new_sam = buffer(sig, 1000, 999);

运行后得到的new_sam是一个1000×9001的矩阵,每一列对应一个连续的1000采样点子集:第一列是sig(1:1000),第二列是sig(2:1001),……最后一列是sig(9001:10000),完全覆盖了所有可能的连续组合。

补充:如果是Python环境

如果你用Python处理,可以用numpy的滑动窗口工具来实现同样效果:

import numpy as np
# 先把列向量转成一维数组
sig_flat = sig.flatten()
# 生成滑动窗口,再转置成类似MATLAB的列格式
new_sam = np.lib.stride_tricks.sliding_window_view(sig_flat, window_shape=1000).T

内容的提问来源于stack exchange,提问作者Htet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:35:03