Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

setfield

구조체형 배열 필드에 값 할당

설명

예제

S = setfield(S,field,value)는 구조체 S의 지정된 필드에 값을 할당합니다. 예를 들어, S = setfield(S,'a',1)S.a = 1을 할당합니다.

setfield를 사용하는 대신 점 표기법 S.field = value를 사용할 수도 있습니다. 일반적으로 점 표기법이 보다 효율적입니다.

S에 지정된 필드가 없으면 setfield는 해당 필드를 생성하고 이 필드에 value를 할당합니다.

예제

S = setfield(S,field1,...,fieldN,value)는 중첩 구조체의 지정된 필드에 값을 할당합니다. 예를 들어, S = setfield(S,'a','b','c',1)S.a.b.c = 1을 할당합니다. 여기서 필드 S.aS.a.b도 구조체입니다.

예제

S = setfield(S,idx,field1,...,fieldN,value)S의 요소를 지정하고 필드 중 하나에 값을 할당합니다. 예를 들어, S = setfield(S,{3,4},'a',1)S(3,4).a = 1을 할당합니다.

예제

S = setfield(S,idx,field1,idx1,...,fieldN,idxN,value)는 필드의 요소를 지정합니다. 예를 들어, S = setfield(S,'a',{2},1)S.a(2) = 1을 할당합니다. 마찬가지로, S = setfield(S,{3,4},'a',{2},'b',1)S(3,4).a(2).b = 1을 할당합니다.

예제

모두 축소

스칼라 구조체를 만듭니다.

S.x = linspace(0,2*pi);
S.y = sin(S.x);
S.title = ''
S = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
    title: ''

setfield 함수를 사용하여 필드에 값을 할당합니다.

S = setfield(S,'title','y = sin(x)')
S = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
    title: 'y = sin(x)'

또다른 필드에 값을 할당합니다. 존재하지 않는 필드를 지정한 경우, setfield는 해당 필드를 생성합니다.

e = sqrt(abs(S.y));
S = setfield(S,'sqrty',e)
S = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
    title: 'y = sin(x)'
    sqrty: [0 0.2518 0.3558 0.4350 0.5011 0.5586 0.6096 0.6556 0.6973 0.7353 0.7700 0.8017 0.8307 0.8571 0.8810 0.9025 0.9218 0.9389 0.9537 0.9665 0.9772 0.9858 0.9924 0.9969 0.9994 0.9999 0.9984 0.9949 0.9893 0.9818 0.9721 0.9604 ... ] (1x100 double)

점 표기법을 사용하여 필드에 값을 할당할 수도 있습니다.

S.title = 'y = sin(x), with error bar values'
S = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
    title: 'y = sin(x), with error bar values'
    sqrty: [0 0.2518 0.3558 0.4350 0.5011 0.5586 0.6096 0.6556 0.6973 0.7353 0.7700 0.8017 0.8307 0.8571 0.8810 0.9025 0.9218 0.9389 0.9537 0.9665 0.9772 0.9858 0.9924 0.9969 0.9994 0.9999 0.9984 0.9949 0.9893 0.9818 0.9721 0.9604 ... ] (1x100 double)

중첩 구조체를 만듭니다. 중첩 구조체에서는 모든 수준의 구조체가 구조체 필드와 구조체가 아닌 필드를 가질 수 있습니다.

S.a.b.c = 1;
S.a.b.d = 2;
S.a.b.e = struct('f',[3 4],'g',5);
S.h = 50
S = struct with fields:
    a: [1x1 struct]
    h: 50

S는 구조체이고 S.a, S.a.bS.a.b.e 필드도 구조체입니다.

S.a
ans = struct with fields:
    b: [1x1 struct]

S.a.b
ans = struct with fields:
    c: 1
    d: 2
    e: [1x1 struct]

S.a.b.e
ans = struct with fields:
    f: [3 4]
    g: 5

setfield 함수를 사용하여 S.a.b.d에 값을 할당합니다. 중첩 구조체 이름을 쉼표로 구분한 목록을 지정할 때는 최상위 구조체와 지정한 필드 이름 사이의 모든 수준에서 구조체 이름을 포함해야 합니다. 여기서는 쉼표로 구분된 구조체 이름 목록은 'a','b'이고 필드 이름은 'd'입니다.

S = setfield(S,'a','b','d',1024);
S.a.b
ans = struct with fields:
    c: 1
    d: 1024
    e: [1x1 struct]

점 표기법을 사용하여 값을 할당할 수도 있습니다.

S.a.b.d = 2048;
S.a.b
ans = struct with fields:
    c: 1
    d: 2048
    e: [1x1 struct]

구조체형 배열의 요소 필드에 값을 할당합니다.

먼저 구조체형 배열을 만듭니다. 모든 구조체형 배열이 그렇듯이 각 요소는 동일한 필드를 갖는 구조체입니다.

S.x = linspace(0,2*pi);
S.y = sin(S.x);
S(2).x = S.x;
S(2).y = cos(S(2).x)
S=1×2 struct array with fields:
    x
    y

setfield를 사용하여 값을 할당할 수도 있습니다. 필드가 존재하지 않으면 setfield는 해당 필드를 생성합니다. title이라는 이름의 필드를 만들어 보십시오.

S = setfield(S,{1},'title','y = sin(x)')
S=1×2 struct array with fields:
    x
    y
    title

setfield 함수는 개별 요소의 필드에 값을 할당하지만, 출력 인수는 구조체형 배열 전체가 됩니다.

S의 첫 번째 요소를 표시합니다.

S(1)
ans = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
    title: 'y = sin(x)'

이 방법 대신에 구조체형 배열의 요소를 참조한 다음 점 표기법을 사용하여 요소의 필드에 값을 할당할 수도 있습니다.

S(2).title = 'y = cos(x)';
S(2)
ans = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [1 0.9980 0.9920 0.9819 0.9679 0.9501 0.9284 0.9029 0.8738 0.8413 0.8053 0.7660 0.7237 0.6785 0.6306 0.5801 0.5272 0.4723 0.4154 0.3569 0.2969 0.2358 0.1736 0.1108 0.0476 -0.0159 -0.0792 -0.1423 -0.2048 -0.2665 -0.3271 ... ] (1x100 double)
    title: 'y = cos(x)'

일부 수준에서 구조체가 구조체형 배열인 중첩 구조체의 필드에 값을 할당합니다. 이 예제에서 S는 1×2 구조체형 배열입니다. 두 번째 요소 S(2)b가 1×3 구조체형 배열인 중첩 구조체 a.b를 갖습니다.

먼저 중첩 구조체를 만듭니다. 점 표기법을 사용하여 구조체를 만든 다음 struct 함수를 사용하여 또 다른 비 스칼라 구조체형 배열을 만들고 이것을 필드로 추가합니다.

S.a = 1;
S(2).a.b = struct('d',{5,10,20});
S
S=1×2 struct array with fields:
    a

S(2).a.b
ans=1×3 struct array with fields:
    d

S(2).a.b의 세 번째 요소를 표시합니다.

S(2).a.b(3)
ans = struct with fields:
    d: 20

setfield 함수를 사용하여 S(2).a.b(3)의 필드 d에 새 값을 할당합니다. 업데이트된 필드를 갖는 구조체를 표시합니다.

S = setfield(S,{2},'a','b',{3},'d',3.1416);
S(2).a.b(3)
ans = struct with fields:
    d: 3.1416

값이 배열인 필드를 갖는 구조체를 만듭니다.

S.a = [5 10 15 20 25]
S = struct with fields:
    a: [5 10 15 20 25]

setfield 함수를 사용하여 S.a의 요소에 값을 할당합니다. 특정 요소에 값을 할당하려면 필드 이름 뒤에 인덱스를 지정합니다. 셀형 배열 내에서 인덱스를 지정해야 합니다. 이때 데이터형이 필드의 데이터형과 일치하는 배열에 새 값을 지정해야 합니다.

S = setfield(S,'a',{3:5},[0 -50 -100])
S = struct with fields:
    a: [5 10 0 -50 -100]

점 표기법과 배열 인덱싱을 사용하여 위와 동일한 요소에 값을 할당할 수도 있습니다.

S.a(3:5) = [20 40 80]
S = struct with fields:
    a: [5 10 20 40 80]

입력 인수

모두 축소

구조체형 배열입니다. S가 비 스칼라이면 S의 각 요소는 구조체이고 모든 요소는 동일한 이름의 동일한 필드를 갖습니다.

필드 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

인덱스로, 숫자형 값 또는 논리값으로 구성된 셀형 배열로 지정됩니다. S의 인덱스와 1부터 N-1까지의 필드는 구조체형 배열의 개별 요소를 지정합니다. 필드 N의 인덱스는 이 필드에 있는 배열의 요소를 하나 이상 지정합니다. 이 필드는 임의의 유형일 수 있습니다.

예: S = setfield(S,{1,2},'a',1)S(1,2).a = 1과 동일합니다.

예: S.a = [5 10 20]이면 S = setfield(S,'a',{[2,3]},[50 100])S.a(2:3) = [50 100]과 동일합니다.

값으로, 임의의 크기를 갖는 임의 유형의 배열로 지정됩니다.

확장 기능

버전 내역

R2006a 이전에 개발됨