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

在Julia中如何控制for循环按指定次数迭代,实现矩阵行滑动窗口取值

实现方案

因为你给出的矩阵写法是MATLAB风格,先提供MATLAB实现,同时也附Python版本参考。

MATLAB实现

核心逻辑是控制列索引的遍历上限,保证每一次取数都能覆盖当前元素+后续2个元素,不会越界:

a = [1 2 3 4 5; 
     6 7 8 9 10; 
     11 12 13 14 15;];
[row_cnt, col_cnt] = size(a);
% 用cell数组存储结果,每行对应原矩阵的一行,每个元素是要求的子数组
res = cell(row_cnt, col_cnt - 2);

for row_idx = 1:row_cnt
    % 列索引最多到倒数第3位,保证j+2不超过列数
    for col_idx = 1:col_cnt - 2
        res{row_idx, col_idx} = a(row_idx, col_idx:col_idx+2);
    end
end

% 测试输出第一行结果
disp(res(1,:))

运行后第一行输出为 [1 2 3] [2 3 4] [3 4 5],符合需求。

Python实现

如果用Python处理,逻辑完全一致,用切片取数更简洁:

a = [
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10],
    [11, 12, 13, 14, 15]
]

res = []
for row in a:
    row_res = []
    # 索引最多到倒数第3位
    for i in range(len(row) - 2):
        # 切片左闭右开,i到i+3刚好取3个元素
        row_res.append(row[i:i+3])
    res.append(row_res)

# 测试输出第一行结果
print(res[0])

运行后第一行输出为 [[1, 2, 3], [2, 3, 4], [3, 4, 5]]。

边界说明

原矩阵每行只有5个元素,因此每行只有前3个元素可以凑齐「自身+后续2个元素」的要求,最后2个元素因后续元素不足默认跳过。如果你需要对最后2个元素也做处理(比如不足位补默认值、或者直接返回剩余元素),可以把遍历的列索引上限调整为总列数,切片会自动截断不足的部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:18:04