matlab数组按索引进行子集化

时间:2013-03-15 23:16:46

标签: matlab indexing subset

假设我有一个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]

是否可以通过索引和没有任何功能(例如diag)来做到这一点?感谢...

2 个答案:

答案 0 :(得分:1)

可以使用sub2ind函数完成,如下所示:

b=a(sub2ind(size(a),range1,range2,range3))

ans: b=[1 14]

答案 1 :(得分:1)

索引可以使用sub2ind

完成
a(sub2ind(size(a),[1:2],[1:2],[1:2]))

如果你想避免所有功能,你可以自己计算线性指数......