【发布时间】:2013-03-15 23:16:45
【问题描述】:
假设我有一个 3x3x3 Matlab 数组,成员为 1 到 27
a=reshape(1:27, [3 3 3])
我想用类似
的语法创建它的一个子集b=a(range1,range2,range3)
对于 range1=range2=range3=1:2,我会得到成员 b(1,1,1) 和 b(2,2,2)。即
b= [1 14]
是否可以仅使用索引而不使用任何功能(例如诊断)来做到这一点?谢谢...
【问题讨论】:
-
@Parag,sub2ind 需要相同大小的向量范围。例如
b=a(sub2ind(size(a),range1,range2,1:3))。这就是为什么我正在寻找只用索引来做...... -
@Molly 请看我对上面 Parag 的评论...
-
range1、range2 和 range3 的大小必须相同,因为每个都对应于矩阵 a 的一个维度。例如,如果 range1 = [x1,x2,x3], range2 = [y1,y2,y3] 和 range3 = [z1,z2,z3] 获得的值将是 a(x1,y1,z1), a(x2 ,y2,z2) 和 a(x3,y3,z3)。所以这个函数采用不同大小的向量是没有意义的。在您评论中的示例中,期望答案是什么?