setfield
구조체형 배열 필드에 값 할당
구문
설명
예제
스칼라 구조체를 만듭니다.
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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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: [1×1 struct]
h: 50
S는 구조체이고 S.a, S.a.b 및 S.a.b.e 필드도 구조체입니다.
S.a
ans = struct with fields:
b: [1×1 struct]
S.a.b
ans = struct with fields:
c: 1
d: 2
e: [1×1 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: [1×1 struct]
점 표기법을 사용하여 값을 할당할 수도 있습니다.
S.a.b.d = 2048; S.a.b
ans = struct with fields:
c: 1
d: 2048
e: [1×1 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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});
SS=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]과 동일합니다.
값으로, 임의의 크기를 갖는 임의 유형의 배열로 지정됩니다.
확장 기능
사용법 관련 참고 및 제한 사항:
필드 이름은 상수여야 합니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)