2

こんにちは私は、配列のスライスを終わり近くから始め近くまで取得する方法を探しています。これを2つの部分に分けて追加できることはわかっていますが、matlabにはすでに組み込まれていると思われる、一般的に望まれる操作のようですが、検索で情報が見つかりませんでした。明確にするために、私は言うことができるようにしたいと思います:

y = 1:10
y(-3:3) or y(8:3)
returns:
8 9 10 1 2 3

前もって感謝します。

4

2 に答える 2

3

実際にそれ行う方法があります(インデックスの負の部分と正の部分の連結に分割せずに):目的の範囲でモジュロ演算子を使用します:

>>  y = 1:10;
>>  y(mod([-3:3]-1,numel(y))+1)

ans =

     7     8     9    10     1     2     3

この結果は7つの数値で構成されます(目的の[8 9 10 1 2 3]とは反対)。これは、-3:3が実際には7つの数値にまたがるため論理的です。

このメソッドでは、数値0はy(end)に対応し、-1はy(end-1)に対応します。

于 2012-05-07T14:48:47.170 に答える
1

これを試すことができます:

y = 1:10;   
n = 3;   
y([end-n+1:end 1:n]);

これは戻ります

ans =

     8     9    10     1     2     3
于 2012-05-07T14:37:02.980 に答える