다음: 구조체 내 자료 처리하기, 이전: 구조체 만들기, 상위 문서: 구조체   [차례][찾아보기]


6.1.4 구조체 조작

아래는 구조체의 기록란을 조작하는 다른 종류의 함수입니다.

numfields (s)

구조체 s의 기록란 개수를 반환합니다.

같이 보기: fieldnames.

= fieldnames (구조체)
= fieldnames (객체)
름 = fieldnames (자바_객체)
= fieldnames ("자바_분류명")

입력에 따라 기록란의 이름을 담은 낱칸 배열인 문자열을 반환합니다.

구조체 구조체를 입력하면, 구조체 원소의 이름을 반환합니다.

옥타브 객체 객체를 입력하면, 객체의 공통 속성을 반환합니다.

자바 객체인 자바_객체 또는 자바 분류 이름인 자바_분류명 문자열을 입력하면, 객체나 분류의 공통 기록란(자료 원소)를 반환합니다.

같이 보기: numfields, isfield, orderfields, struct, methods.

isfield (가로, "이름")
isfield (가로, 이름)

가로이름이란 원소를 가진 구조체이면 참을 반환합니다.

이름이 낱칸 배열인 문자열이면 같은 크기의 논리 배열을 반환합니다.

같이 보기: fieldnames.

sout = setfield (s, 기록란, )
sout = setfield (s, 구조체_색인1, 기록란1, 기록란_색인1, 원소_색인2, 기록란2, 기록란_색인2, …, )

기록란 요소 기록란의 값이 으로 설정된 구조체 s의 사본을 반환합니다.

예시입니다.

s = struct ();
s = setfield (s, "foo bar", 42);

위 예시는 아래 표현식과 같습니다.

s.("foo bar") = 42;

일반적인 구조체 구문 s.foo bar = 42는 공백 문자가 있어 잘못된 옥타브 식별자를 사용하므로 사용 불가능 합니다.  임의의 문자열을 기록란 이름으로 사용하면 매트랩과 호환되지 않고, 경고 식별자 Octave:language-extension이 활성화되었으면 경고가 나옵니다. 경고 식별자를 보십시오.

두 번째 호출 형식은 구조체 배열의 기록란을 설정합니다. 입력한 구조체_색인은 구조체 배열의 원소를 선택하고, 기록란은 선택한 원소의 기록란 이름을 정하며, 기록란_색인은 기록란의 원소(배열 또는 낱칸 배열의 원소)를 선택합니다. 구조체_색인, 기록란, 기록란_색인 입력에 새긴 위치를 같게 하여 구조체를 안을 수 있습니다. 구조체 배열 색인과 기록란 원소 색인은 반드시 낱칸 배열이어야 하며, 기록란 이름은 반드시 문자열이어야 합니다. 

예시:

s = struct ("baz", 42);
setfield (s, {1}, "foo", {1}, "bar", 54)
⇒
  ans =
    scalar structure containing the fields:
      baz =  42
      foo =
        scalar structure containing the fields:
          bar =  54

일반적인 스칼라 구조체에 다른 스칼라 구조체를 안기는 예시입니다. 모든 경우에 구조체 색인 구조체_색인이 지정되지 않으면 기본 값 1(스칼라 구조체)를 사용합니다. 그러므로 위 예시는 setfield (s, "foo", "bar", 54)으로 더 간결하게 적어도 됩니다.

마지막으로 안은 구조체 배열 예시입니다.

sa.foo = 1;
sa = setfield (sa, {2}, "bar", {3}, "baz", {1, 4}, 5);
sa(2).bar(3)
⇒
  ans =
    scalar structure containing the fields:
      baz =  0   0   0   5

sa는 기록란 1과 2가 있는 구조체 배열로, 두 번째 기록란의 세 번째 원소가 간단한 스칼라 구조체입니다. 스칼라 구조체의 끝에는 행렬 값을 포함한 기록란이 있습니다.

위 예시와 같은 결과를 아래 방식으로도 얻을 수 있음을 확인하십시오.

sa.foo = 1;
sa(2).bar(3).baz(1,4) = 5

같이 보기: getfield, rmfield, orderfields, isfield, fieldnames, isstruct, struct.

= getfield (s, 기록란)
= getfield (s, 구조체_색인1, 기록란1, 기록란_색인1, …)

구조체 또는 안긴 구조체 s의 기록란 기록란의 값을 얻습니다.

s가 구조체 배열이면 구조체_색인은 구조체 배열 원소를 선택하며, 기록란은 선택한 원소의 기록란 이름을 지정하고, 기록란_색인은 기록란의 원소(배열 또는 낱칸 배열인 경우)를 선택합니다. 구문에 대한 보다 완전한 기술을 setfield에서 보십시오.

같이 보기: setfield, rmfield, orderfields, isfield, fieldnames, isstruct, struct.

sout = rmfield (s, "f")
sout = rmfield (s, f)

기록란 f를 제거한 채로 구조체(배열) s의 사본을 반환합니다.

f가 낱칸 배열인 문자열이거나 문자 배열이면, 해당 이름인 기록란를 모두 제거합니다.

같이 보기: orderfields, fieldnames, isfield.

sout = orderfields (s1)
sout = orderfields (s1, s2)
sout = orderfields (s1, {낱칸_배열})
sout = orderfields (s1, p)
[sout, p] = orderfields (…)

s1의 기록란을 가나다순으로 정렬하거나 두 번째 매개변수에 지정한 대로 처리한 사본을 반환합니다.

매개변수가 s1 하나이면, 기록란을 가나다순으로 정렬합니다.

두 번째 구조체 매개변수가 주어지면,  s1의 기록란 이름을 s2에 나온 대로 정렬합니다. 두 번째 매개변수를 낱칸 배열인 문자열 낱칸_배열로 지정하여, 그 순서대로 정렬할 수도 있습니다. 두 번째 매개변수로 순열 벡터를 사용하여도 됩니다.

두 번째 선택 출력 매개변수인 p는 원본 이름 순서를 새 이름 순서로 바꾸는 순열 벡터입니다.

예시:

s = struct ("d", 4, "b", 2, "a", 1, "c", 3);
t1 = orderfields (s)
  ⇒ t1 =
       scalar structure containing the fields:
         a =  1
         b =  2
         c =  3
         d =  4
t = struct ("d", {}, "c", {}, "b", {}, "a", {});
t2 = orderfields (s, t)
  ⇒ t2 =
       scalar structure containing the fields:
         d =  4
         c =  3
         b =  2
         a =  1
t3 = orderfields (s, [3, 2, 4, 1])
  ⇒ t3 =
       scalar structure containing the fields:
         a =  1
         b =  2
         c =  3
         d =  4
[t4, p] = orderfields (s, {"d", "c", "b", "a"})
  ⇒ t4 =
       scalar structure containing the fields:
         d =  4
         c =  3
         b =  2
         a =  1
     p =
        1
        4
        2
        3

같이 보기: fieldnames, getfield, setfield, rmfield, isfield, isstruct, struct.

substruct (type, subs, …)

subsrefsubsasgn에 사용하기 위한 예약 구조체를 만듭니다.

For example:

idx = substruct ("()", {3, ":"})
  ⇒ idx =
       scalar structure containing the fields:
         type = ()
         subs =
         {
           [1,1] =  3
           [1,2] = :
         }
x = [1, 2, 3;
     4, 5, 6;
     7, 8, 9];
subsref (x, idx)
  ⇒   7   8   9

같이 보기: subsref, subsasgn.


다음: 구조체 내 자료 처리하기, 이전: 구조체 만들기, 상위 문서: 구조체   [차례][찾아보기]