-1

xが配列[x1, x2, x3, x4, x5]で、 と をマージしたいとしx2ますx4。これは、それらの合計を配列に入れ、配列から and を削除することによって行われx2ますx4。出力配列は次のようになります[x1, x2+x4, x3, x5]

Matlab でこれを行う 1 つの方法を次に示します。

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

このメソッドは、配列に重複がない限り機能します。x値をマージした後、ループや配列要素のシフトに頼らずにこれを行う賢いMatlabの方法はありますか?

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 に答える