-1

假设x是一个数组[x1, x2, x3, x4, x5],我们想要合并x2x4。这是通过将它们的总和放入数组中并从数组中删除x2x4来完成的。输出数组应如下所示:[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在合并值后不诉诸循环和移动数组元素的情况下执行此操作?

4

1 回答 1

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,没有排序,也没有唯一性。

于 2012-10-24T18:53:51.833 回答