假设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))
只要数组中没有重复项,此方法就可以正常工作。有没有聪明的Matlab方法为任何x
做这个,而不是在合并值之后求助于循环和数组元素的移位?
答案 0 :(得分:1)
如果你想改变这个
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,没有排序也没有唯一。