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

Matlab中按指定时间索引提取邻域窗口并沿第三维求平均的实现方法

Matlab时间序列窗口均值计算实现

完整实现代码

%% 1. 输入数据(示例)
x = [1 2 3 4 5 6 7 8; 9 10 11 12 13 14 15 16; 17 18 19 20 21 22 23 24 ; 25 26 27 28 29 30 31 32];
y = [4 5 6];

%% 2. 配置窗口参数
offset = 1; % 中心索引前后偏移量,若需要前后各2个点修改为2即可
win_len = 2 * offset + 1;
[num_chan, ~] = size(x);
num_win = length(y);

%% 3. 提取所有窗口并堆叠为3D数组
col_idx = y + (-offset:offset); % 生成所有窗口的列索引
win_stack = reshape(x(:, col_idx), num_chan, win_len, num_win);

%% 4. 沿第三维(窗口维度)求平均
avg_result = mean(win_stack, 3);

示例运行结果

上述代码运行后avg_result输出为:

4     5     6
    12    13    14
    20    21    22
    28    29    30

注意事项

  • 请确保y中所有索引对应的窗口范围不超出x的列边界:即min(y) > offset 且 max(y) <= size(x,2) - offset,否则会触发索引越界报错。
  • 若需要调整窗口大小,仅需修改offset参数即可,无需改动其他逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:15:03