0

假设我有一个 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). IE

b= [1 14]

是否可以仅使用索引而不使用任何功能(例如诊断)来做到这一点?谢谢...

4

2 回答 2

1

索引可以使用sub2ind,

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

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

于 2013-03-15T23:32:11.110 回答
1

可以通过sub2ind以下功能完成:

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

ans: b=[1 14]
于 2013-03-15T23:29:33.423 回答