Main Content

구조체 결합

이 예제에서는 [] 연산자를 사용하여 구조체형 배열을 결합하는 방법을 보여줍니다. 구조체를 결합하려면 구조체에 동일한 필드 세트가 있어야 하지만, 필드에 포함되는 데이터의 크기나 데이터형이 동일할 필요는 없습니다.

각각 필드 ab를 포함하는 스칼라(1×1) 구조체형 배열 struct1struct2를 생성합니다.

struct1.a = 'first';
struct1.b = [1,2,3];
struct2.a = 'second';
struct2.b = rand(5);
struct1,struct2
struct1 = struct with fields:
    a: 'first'
    b: [1 2 3]

struct2 = struct with fields:
    a: 'second'
    b: [5x5 double]

두 개의 스칼라 값을 결합하면(예: [1,2]) 1×2 숫자형 배열이 생성되는 것과 마찬가지로, struct1struct2를 결합하면 1×2 구조체형 배열이 생성됩니다.

combined = [struct1,struct2]
combined=1×2 struct array with fields:
    a
    b

특정 필드의 내용에 액세스하려는 경우 배열의 구조체에 대한 인덱스를 지정합니다. 예를 들어, 첫 번째 구조체의 필드 a에 액세스해 보겠습니다.

combined(1).a
ans = 
'first'

결합은 비 스칼라 구조체형 배열에도 적용됩니다. 예를 들어, new라는 2×2 구조체형 배열을 생성해 보겠습니다. 1×2 구조체 combined와 2×2 구조체 new 모두 두 개의 열을 가지기 때문에, 세미콜론 구분 기호를 사용하여 이 두 구조체를 세로로 결합할 수 있습니다.

new(1,1).a = 1;
new(1,1).b = 10;
new(1,2).a = 2;
new(1,2).b = 20;
new(2,1).a = 3;
new(2,1).b = 30;
new(2,2).a = 4;
new(2,2).b = 40;

larger = [combined; new]
larger=3×2 struct array with fields:
    a
    b

구조체 larger(2,1)의 필드 a에 액세스합니다. 여기에 포함된 값은 new(1,1).a와 동일합니다.

larger(2,1).a
ans = 1

관련 항목