다음: 구조체 배열, 상위 문서: 구조체   [차례][찾아보기]


6.1.1 기본 용법과 예시

옥타브에서 구조체를 사용하는 예시입니다.

구조체의 원소에는 아무 값 형태나 가능합니다. 예를 들어, 아래 세 표현식은

x.a = 1;
x.b = [1, 2; 3, 4];
x.c = "string";

세 원소를 가진 구조체를 만듭니다. ‘.’ 문자가 구조체 이름(위 예시에서는 x)을 이름 기록란과 구분하고, 옥타브에 변수가 구조체임을 알려줍니다. 구조체 값을 출력하려면, 어떤 변수이든지 이름을 타자하면 됩니다.

x
     ⇒ x =

         scalar structure containing the fields:

           a =  1
           b =

              1   2
              3   4

           c = string

옥타브가 원소를 아무 순서로 출력함을 유의하십시오.

구조체도 다른 변수처럼 복사합니다.

y = x
     ⇒ y =

         scalar structure containing the fields:

           a =  1
           b =

              1   2
              3   4

           c = string

구조체는 그 자체가 값이기 때문에, 구조체 원소가 다른 구조체를 안아도 됩니다. 아래 명령문은 구조체 x가 기록란 d를 안습니다. 기록란 d의 값은, 값이 3인 기록란 a 하나만 가진 자료 구조체입니다.

x.d.a = 3;
x.d
     ⇒ ans =

         scalar structure containing the fields:

           a =  3

x
     ⇒ x =

         scalar structure containing the fields:

           a =  1
           b =

              1   2
              3   4

           c = string
           d =

             scalar structure containing the fields:

               a =  3

옥타브가 다른 구조체를 안은 구조체의 값을 출력할 때는 몇 수준 아래까지 밖에 안 감에 유의하십시오. 예시입니다.

a.b.c.d.e = 1;
a
     ⇒ a =

         scalar structure containing the fields:

           b =

             scalar structure containing the fields:

               c =

                 scalar structure containing the fields:

                   d: 1x1 scalar struct

이는 크고 깊게 안은 구조체를 길고 난잡하게 출력하지 않게 막습니다. 안은 구조체의 최대 출력 수준은 함수 struct_levels_to_print로 설정하며, 구조체 배열 출력 활성화는 함수 print_struct_array_contents로 합니다.

= struct_levels_to_print ()
옛_값 = struct_levels_to_print (새_값)
struct_levels_to_print (새_값, "local")

화면에 표시할 구조체의 깊이 수준을 정하는 내부 변수를 조회 또는 설정합니다.

함수 안에서 "local" 선택지를 넣어 부르면, 함수와 함수가 부른 종속 절차의 변수가 지역적으로 바뀝니다. 함수가 종료되면 원래 변숫값이 되돌아옵니다.

같이 보기: print_struct_array_contents.

= print_struct_array_contents ()
옛_값 = print_struct_array_contents (새_값)
print_struct_array_contents (새_값, "local")

구조체 배열 내용의 출력 여부를 결정하는 내부 변수를 조회 또는 설정합니다.

참이면 구조체 배열의 값을 출력합니다. 이 변수는 이미 모든 원소가 출력되는 스칼라 구조체에는 영향을 미치지 않습니다. 그러나 struct_levels_to_print에서 지정한 출력 수준에 영향을 받습니다.

함수 안에서 "local" 선택지를 넣어 부르면, 함수와 함수가 부른 종속 절차의 변수가 지역적으로 바뀝니다. 함수가 종료되면 원래 변숫값이 되돌아옵니다.

같이 보기: struct_levels_to_print.

함수는 구조체를 반환할 수 있습니다. 예를 들어, 아래 함수는 행렬로 실수분와 허수부를 분리하고, 두 원소를 동일한 구조체 변수 y에 저장합니다.

function y = f (x)
  y.re = real (x);
  y.im = imag (x);
endfunction

복소수 값인 매개변수와 호출하면, f는 기존 함수 매개변수의 실수부와 허수부를 담은 자료 구조체를 반환합니다.

f (rand (2) + rand (2) * I)
     ⇒ ans =

         scalar structure containing the fields:

           re =

              0.040239  0.242160
              0.238081  0.402523

           im =

              0.26475  0.14828
              0.18436  0.83669

함수가 구조체 원소를 포함하는 목록을 반환하고, 다른 변수처럼 탐색할 수 있습니다. 예시입니다.

[ x.u, x.s(2:3,2:3), x.v ] = svd ([1, 2; 3, 4]);
x

     ⇒ x =

         scalar structure containing the fields:

           u =

             -0.40455  -0.91451
             -0.91451   0.40455

           s =

              0.00000   0.00000   0.00000
              0.00000   5.46499   0.00000
              0.00000   0.00000   0.36597

           v =

             -0.57605   0.81742
             -0.81742  -0.57605

특별한 형식의 for문을 사용하여, 구조체의 모든 원소를 순환하는 것도 가능합니다.(구조체 원소 반복하기를 보십시오.)


다음: 구조체 배열, 상위 문서: 구조체   [차례][찾아보기]