How to interchange elements of an array?

1 回表示 (過去 30 日間)
Noor Fatima
Noor Fatima 2022 年 3 月 27 日
コメント済み: Voss 2022 年 3 月 28 日
X = [ 4 2 3 6 5 1]
x1 = [2 3 1 2]
I want to interchange entries of X based on x1, that is
Output X =[4 6 2 3 5 1];
Any help is appreciated.

採用された回答

Voss
Voss 2022 年 3 月 27 日
X = [ 4 2 3 6 5 1];
x1 = [2 3 1 2];
Xnew = X;
for ii = 1:numel(x1)
Xnew([ii x1(ii)]) = Xnew([x1(ii) ii]);
end
Xnew
Xnew = 1×6
4 6 2 3 5 1
  2 件のコメント
Noor Fatima
Noor Fatima 2022 年 3 月 28 日
@_Thank you, Is it possible without loop?
Voss
Voss 2022 年 3 月 28 日
Well, you can write down an expression to do it in this particular case:
X = [ 4 2 3 6 5 1];
Xnew = X([1 4 2 3 5 6])
Xnew = 1×6
4 6 2 3 5 1
But I don't think you can do it in general without using a loop somewhere, because the result of any swap depends on the results of the previous swaps, so it's necessarily an iterative process.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by