1

次の例は、MATLABチュートリアルに表示されます。

X = [16  2 13;
     5  11  8;
     9   7 12;
     4  14  1]

単一の添え字を使用すると、単一の要素または要素のシーケンスが削除され、残りの要素が行ベクトルに再形成されます。それで:

X(2:2:10) = []

結果:

X = [16 9 2 7 13 12 1]

不思議なことに、2行目全体と4行目の最初の2つの要素が削除されましたが、削除された要素の位置とインデックスベクトルの対応がわかりません2:2:10。誰か説明してもらえますか?

4

2 に答える 2

12

あなたが与えた例は線形索引付けを示しています。多次元配列があり、それに単一のスカラーまたはベクトルを指定すると、各列に沿って上から下、左から右にインデックスが付けられます。各ディメンションへのインデックス作成の例を次に示します。

mat = [1 4 7; ...
       2 5 8; ...
       3 6 9];
submat = mat(1:2, 1:2);

submatマトリックスの左上隅が含まれます:[1 4; 2 5]。これは1:2、サブインデックスの最初の次元が最初の次元(行)に1:2アクセスし、2番目の次元が2番目の次元(列)にアクセスして、2行2列の正方形を抽出するためです。コンマで区切られた各次元のインデックスを指定せず、代わりに1つのインデックスを指定した場合、MATLABは、1つの大きな列ベクトルであるかのように行列にインデックスを付けます。

submat = mat(3, 3);     % "Normal" indexing: extracts element "9"
submat = mat(9);        % Linear indexing: also extracts element "9"
submat = mat([1 5 6]);  % Extracts elements "1", "5", and "6"

詳細については、MATLABのドキュメントを参照してください。

于 2009-02-21T02:58:30.323 に答える
0

とても簡単です。

基本的に、この例では 2 番目の要素から開始し、2 のステップで 10 番目の要素 (列方向) まで進み、対応する要素を削除します。残りの要素は行ベクトルになります。

于 2009-12-17T09:05:00.880 に答える