이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
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 ... ] (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.b
및 S.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
가 비 스칼라이면 S
의 각 요소는 구조체이고 모든 요소는 동일한 이름의 동일한 필드를 갖습니다.
field
— 필드 이름
문자형 벡터 | string형 스칼라
필드 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
idx
— 인덱스
숫자형 값 또는 논리값으로 구성된 셀형 배열
인덱스로, 숫자형 값 또는 논리값으로 구성된 셀형 배열로 지정됩니다. 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]
과 동일합니다.
value
— 값
배열
값으로, 임의의 크기를 갖는 임의 유형의 배열로 지정됩니다.
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)