这条线 a(b) = a 正在表演 矢量化索引 跨越元素的操作 b 和 a (要求他们拥有与他们相同数量的元素)。为了更好地理解它正在做什么,这里是使用for循环完成的等效非向量化操作:
a(b) = a
b
a
c = a; % Store original to work from for index = 1:numel(b) a(b(index)) = c(index); end
所以,元素 a(b(1)) (要么 a(2) ,第二个元素)被赋值来自 a(1) ,元素 a(b(2)) (要么 a(4) ,第四个元素)被赋值来自 a(2) 它等同于对索引向量的元素进行排序 b ,然后将相同的排序排列应用于 a 。对于给定的向量 b ,这放置了上半年的元素 a 在偶数指数位置和后半部分的元素 a 在奇数指数位置。
a(b(1))
a(2)
a(1)
a(b(2))
a(4)