gpt4 book ai didi

matlab - 根据索引列表从数组中提取固定数量的数据

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:17 28 4
gpt4 key购买 nike

我有数组

a=1:20

和一系列指示我想从哪里开始提取数据的索引:

i=[4,12]

对于每个索引 i,我希望该索引和接下来的四个(嗯,x,真的)元素在一列或一行中。我将避免接近数组的末尾,以便可以忽略这种特殊情况。

如果我对此进行硬编码,我可以使用:

a([4:8;12:16])

这将实现我的结果。

但是 i 可能有很多不同的值。

关于如何将索引列表转换为范围矩阵或解决此问题的其他方法有什么想法吗?

编辑我正在使用 Matlab 2007;如果解决方案仅依赖于 Matlab 的内部结构和工具箱​​,那将是更可取的。 bsxfun 直到 2007a 才出现。

最佳答案

i为你的索引x,x为你想要的元素个数加上i中的元素,那么你可以使用

i = [4 6 8];
x = 4;

bsxfun(@plus, 0:x, i(:))

获取索引矩阵:

ans =

4 5 6 7 8
6 7 8 9 10
8 9 10 11 12

如果您没有访问 bsxfun 的权限,您可以使用 repmat 代替:

i = [4 6 8];
x = 4;

repmat(i(:), 1, x+1) + repmat(0:x, length(i), 1)

关于matlab - 根据索引列表从数组中提取固定数量的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361240/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com