以特定的非串行顺序连接向量

Dim*_*i C 4 matlab vector vectorization

我有载体a,bc; 向量ab包含整数,而向量c具有二进制值作为元素:(0,1).

向量a长度为n,向量b长度为k.矢量c长度为n + k.

我想连接向量ab基于向量c.

例如.如果c=[1 0 0 1 0 . . . . ]那时我想创建矢量res=[a(1) b(1) b(2) a(2) b(3) . . . ].

没有for循环,有没有办法这样做?

Adr*_*aan 7

res = c; %// copy c for the result vector
res(c) = a;
res(~c) = b;
Run Code Online (Sandbox Code Playgroud)

使用逻辑索引!这是有效的,因为0元素的数量c正好等于元素b的数量,1元素的数量等于元素的数量a.索引的逻辑运算符归功于@ Dan的评论

  • 如果`c`是一个开始的逻辑矩阵,你甚至可以做`res(c)= a`和`res(~c)= b`. (2认同)