【发布时间】:2012-11-13 13:03:50
【问题描述】:
我有数组
a=1:20
以及一系列指示我想从哪里开始提取数据的索引:
i=[4,12]
对于每个索引i,我希望该索引和接下来的四个(嗯,x,真的)元素在列或行中。我会避免接近数组的末尾,因此可以忽略特殊情况。
如果我对此进行硬编码,我可以使用:
a([4:8;12:16])
这将达到我的结果。
但i 可能有许多不同的值。
关于如何将索引列表转换为范围矩阵或解决此问题的其他方法有什么想法吗?
编辑
我正在使用 Matlab 2007;如果解决方案仅依赖于 Matlab 的内部结构和工具箱,那将是更好的选择。 bsxfun 直到 2007 年才出现。
【问题讨论】:
-
如果范围重叠怎么办?您想获得相同的元素两次还是一次?
-
@Jonas,范围应该被认为是独立的。如果它们重叠,它们会返回相同的数据,就好像它们没有重叠一样。