インデックスの変更で​​、変数の値が変更さ​れ​る理由がわからず​困っ​ています。

インデックスの変更で​、変数の値が変更され​る理由がわからず困っ​ています。xの配列数​を増やすとエラーがな​くなります。最初に準​備すると配列数との関​係をどなたか教えてい​ただけないでしょうか​。実行すると、以下の​エラーが発生します。​”インデックスが配列​要素数 (12) を超えています。 エラー: p7_1_4 (line 10) F=x(ind); ”。
x=(1:12)*2;
ind=[1 3 5 7 9 11;2 4 6 8 10 12;3 5 7 9 11 13];
F=x(ind);

 Accepted Answer

Atsushi Ueno
Atsushi Ueno on 8 Feb 2022

1 vote

数を減らして分かりやすく提示します。
x=(1:4)*2
x = 1×4
2 4 6 8
ind=[1 3;2 4]
ind = 2×2
1 3 2 4
F=x(ind) % xの1番目、2番目、3番目、4番目の数値がindの配置通りに選択される
F = 2×2
2 6 4 8
ind=[1 3;2 4; 3 5]
ind = 3×2
1 3 2 4 3 5
F=x(ind) % xの5番目(未定義)にアクセスしようとしたのでエラーが出る
Index exceeds the number of array elements. Index must not exceed 4.

5 Comments

kN
kN on 8 Feb 2022
丁寧に、ご説明いただきありがとうございました。
indの値を変更すると配列の数を変えないのですが、エラーが出てしまいます。
エラーの原因は要素の数だけではないということでしょうか。
例えば以下のように、要素の1つを大きな値にする場合です。
ind=[1 3;2 4]⇒ind=[1 3;20 4];
x=(1:4)*2;
ind=[1 3;20 4];
F=x(ind);
インデックスが配列要素数 (4) を超えています。
エラー: p7_1_4 (line 8)
F=x(ind);
Atsushi Ueno
Atsushi Ueno on 8 Feb 2022
ind(2,1) == 20 です。x(ind(2,1))は、x(20)を参照します。
x(1)==2, x(2) == 4, x(3) == 6, x(4) ==8 で、x(20)は未定義なのでエラーになります。
Atsushi Ueno
Atsushi Ueno on 8 Feb 2022
>エラーの原因は要素の数だけではないということでしょうか。
indをxのインデックスとして用いる際に、indの要素数がエラーの要因になる事はありません。
Atsushi Ueno
Atsushi Ueno on 8 Feb 2022
indのインデックスがxのインデックスになる訳ではありません。
indの値自体がxのインデックスになります。
kN
kN on 8 Feb 2022
ご説明ありがとうございました。
勘違いしているポイントが分かりました。

Sign in to comment.

More Answers (0)

Categories

Find more on 行列および配列 in Help Center and File Exchange

Asked:

kN
on 8 Feb 2022

Commented:

kN
on 8 Feb 2022

Community Treasure Hunt

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

Start Hunting!