【发布时间】:2017-12-25 04:00:42
【问题描述】:
我正在尝试访问 Matlab 中多维数组的一部分 - 可以这样做:X(2:3, 1:20, 5, 4:7)
但是,元素的数量和范围都不是固定的,所以我想提供数组中的索引 - 对于上面的例子,它们是
ind1 = [2 1 5 4];
ind2 = [3 20 5 7];
对于固定数量的维度,这不是问题(X(ind1(1):ind2(1),...),但由于它们不是我不确定如何在 Matlab 中实现这一点。有没有办法?或者我应该以不同的方式处理这个问题?
【问题讨论】:
-
我有点困惑。您是说尺寸可以从 3D 变为 5D 等?你怎么知道你想要哪些索引?
-
尺寸不变:如果 u 是 5x7x8x9 数组和
v=u(2:3,6:7,6:6,3:9),那么 v 仍然是 4D - 但是v(1,1,1,1)=u(2,6,6,3)。访问不是问题,给数组参数是。 -
我仍在尝试找出您的问题/问题。你想让 v(1,1,1,1) 变成 v(2,6,6,3) 吗?或者您只是想要一种更好的方式来访问 X(ind1(1):ind2(1)...) 。或者您不想手动输入 ind1 = ... 和 ind2 = ... ?
-
基本上你是一个未知维度的 4D 矩阵/张量,你想根据索引
ind1和ind2提取 4D 子矩阵/张量?那么为什么v = X(ind1(1):ind2(1), ind1(2):ind2(2), ind1(3):ind2(3), ind1(4):ind2(4));不能像您一直使用的 4D 一样工作呢? -
@mpaskov - 我并不总是 4 维的;因此我不能将它“硬编码”为 X(ind1(1):ind2(1), ... ind1(4):ind2(4)) 因为我不知道我有多少参数。