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

インデックスの変更で​、変数の値が変更され​る理由がわからず困っ​ています。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);

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 2월 8일

1 개 추천

数を減らして分かりやすく提示します。
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

kN
kN 2022년 2월 8일
丁寧に、ご説明いただきありがとうございました。
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 2022년 2월 8일
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 2022년 2월 8일
>エラーの原因は要素の数だけではないということでしょうか。
indをxのインデックスとして用いる際に、indの要素数がエラーの要因になる事はありません。
Atsushi Ueno
Atsushi Ueno 2022년 2월 8일
indのインデックスがxのインデックスになる訳ではありません。
indの値自体がxのインデックスになります。
kN
kN 2022년 2월 8일
ご説明ありがとうございました。
勘違いしているポイントが分かりました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 行列および配列에 대해 자세히 알아보기

질문:

kN
2022년 2월 8일

댓글:

kN
2022년 2월 8일

Community Treasure Hunt

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

Start Hunting!