10

まずA、構造体として指定し、他の 2 つの構造体B(要素の順序が同じで、要素のC順序が異なる) を指定します。

A.x = 11;
A.y = 11;

B.x = 21;
B.y = 22;

C.y = 31;   %// Note that I am specifying
C.x = 32;   %// y first and x second

A = B;      %// Works fine
A = C;      %// Works fine

これは、構造体に期待Aする動作です。要素の順序は重要ではありません。BC

ここで、構造体ではなく構造体配列として指定し、その要素の 1 つをそれぞれおよびAに割り当てようとします。BC

clear;

A(1).x = 11;
A(1).y = 12;

B.x = 21;
B.y = 22;

C.y = 31;   %// Note that I am specifying
C.x = 32;   %// y first and x second

A(1) = B;   %// Works fine
A(1) = C;   %// Error!

突然、MATLAB が次のエラーを表示します。

異なる構造間の添え字代入

なぜこれが起こるのか、そしてエレガントな方法でそれを修正する方法を知っている人はいますか?

4

2 に答える 2