Arrays Matlab中的数组元素合并

Arrays Matlab中的数组元素合并,arrays,matlab,Arrays,Matlab,假设x是一个数组[x1,x2,x3,x4,x5],我们想要合并x2和x4。这是通过将它们的总和放入数组并从数组中删除x2和x4来实现的。输出数组应该如下所示:[x1,x2+x4,x3,x5] 以下是在Matlab中执行此操作的一种方法: tmp = x(2) + x(4); x(2) = tmp; x(4) = tmp; [m,n] = unique(x,'first'); x(sort(n)) 只要阵列中没有重复项,此方法就可以工作。对于任何x,有没有什么聪明的Matlab方法可以做到这一

假设
x
是一个数组
[x1,x2,x3,x4,x5]
,我们想要合并
x2
x4
。这是通过将它们的总和放入数组并从数组中删除
x2
x4
来实现的。输出数组应该如下所示:
[x1,x2+x4,x3,x5]

以下是在Matlab中执行此操作的一种方法:

tmp = x(2) + x(4);
x(2) = tmp;
x(4) = tmp;
[m,n] = unique(x,'first'); 
x(sort(n))

只要阵列中没有重复项,此方法就可以工作。对于任何
x
,有没有什么聪明的Matlab方法可以做到这一点,而不必在合并值后求助于循环和数组元素的移位?

如果你想转换它

x = [x(1) x(2) x(3) ... x(i)... x(j)... x(n)]
进入这个

x = [x(1) x(2) x(3) ... x(i)+x(j) ... **... x(n)]
其中**为空且新x为n-1个元素长,则应执行以下操作:

x(i) = x(i)+x(j);
x(j) = [];

没有tmp,没有排序,也没有唯一性。

一般来说,输入是一个数组x和要合并的目标索引i,j。是的,但是x的长度仍然是n。如果我需要一个长度为n-1的数组,我需要将所有元素从x(j+1):x(n)向左移位,并在移位后截断最后一个索引。想想看,这样做毕竟不会那么昂贵。。。