structfun
스칼라 구조체의 각 필드에 함수 적용
설명
는 스칼라 구조체 A
= structfun(func
,S
)S
의 각 필드에 한 번에 하나씩 함수 func
를 적용합니다. 그런 다음, structfun
은 func
의 출력값을 열 벡터 A
에 결합합니다. 입력 인수 func
는 하나의 입력 인수를 받고 스칼라를 반환하는 함수에 대한 함수 핸들입니다. func
의 출력값은 해당 데이터형의 객체를 결합할 수 있는 한, 어떤 데이터형이든 될 수 있습니다. A
의 요소 개수는 S
의 필드 개수와 같습니다.
사용자는 structfun
이 A
의 요소를 계산하는 순서를 지정할 수 없으며, 또는 특정 순서로 계산을 수행하기를 기대할 수도 없습니다.
는 하나 이상의 A
= structfun(func
,S
,Name,Value
)Name,Value
쌍 인수를 추가 옵션으로 지정하여 func
를 적용할 때 사용합니다. 예를 들어, 구조체로 출력값을 반환하려면 'UniformOutput',false
를 지정하십시오. func
가 배열에 결합할 수 없는 값을 반환할 경우 A
를 구조체로 반환할 수 있습니다. 반환된 구조체는 S
와 동일한 필드를 가집니다.
[A1,...,Am] = structfun(___)
은 func
가 m
개 출력값을 반환할 경우 여러 개의 출력 배열 A1,...,Am
을 반환합니다. func
는 데이터형이 서로 다른 출력 인수를 반환할 수 있지만, func
를 호출할 때마다 각 출력값의 데이터형이 동일해야 합니다. 이 구문은 위에 열거된 구문 중 하나의 입력 인수에 사용할 수 있습니다.
예제
구조체의 필드에 함수 적용하기
서로 다른 크기의 숫자형 배열이 포함된 필드를 가진 스칼라 구조체를 만듭니다.
S.f1 = 1:10; S.f2 = [2; 4; 6]; S.f3 = []
S = struct with fields:
f1: [1 2 3 4 5 6 7 8 9 10]
f2: [3x1 double]
f3: []
각 숫자형 배열의 평균을 계산하여 배열로 반환합니다.
A = structfun(@mean,S)
A = 3×1
5.5000
4.0000
NaN
객체 배열 반환하기
각 필드에 난수로 구성된 배열이 포함된 스칼라 구조체를 만듭니다.
S.X = rand(1,10); S.Y = rand(1,10); S.Z = rand(1,10)
S = struct with fields:
X: [0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 0.2785 0.5469 0.9575 0.9649]
Y: [0.1576 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157 0.7922 0.9595]
Z: [0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555 0.1712]
배열을 플로팅합니다. plot
함수를 사용하여 chart line 객체로 구성된 배열을 반환하고 chart line 객체를 사용하여 각 데이터 점 집합에 각기 다른 마커를 추가합니다. structfun
은 해당 데이터형의 객체가 결합될 수 있는 한, 어떤 데이터형의 배열도 반환할 수 있습니다.
figure hold on p = structfun(@plot,S); p(1).Marker = 'o'; p(2).Marker = '+'; p(3).Marker = 's'; hold off
스칼라 구조체 반환하기
행렬이 포함된 필드를 갖는 스칼라 구조체를 만듭니다.
S.f1 = 1:10; S.f2 = [2 3; 4 5; 6 7]; S.f3 = rand(4,4)
S = struct with fields:
f1: [1 2 3 4 5 6 7 8 9 10]
f2: [3x2 double]
f3: [4x4 double]
각 행렬의 평균을 계산합니다. mean
이 각 열의 평균값이 포함된 벡터를 반환하기 때문에 이 평균을 배열로 반환할 수 없습니다. 평균을 구조체로 반환하려면 'UniformOutput',false
이름-값 쌍을 지정하십시오.
A = structfun(@mean,S,'UniformOutput',false)
A = struct with fields:
f1: 5.5000
f2: [4 5]
f3: [0.6902 0.3888 0.7627 0.5962]
여러 개의 출력 배열 반환하기
스칼라 구조체를 만듭니다.
S.f1 = 1:10; S.f2 = [2 3; 4 5; 6 7]; S.f3 = rand(4,4)
S = struct with fields:
f1: [1 2 3 4 5 6 7 8 9 10]
f2: [3x2 double]
f3: [4x4 double]
S
에 있는 각 배열의 크기를 계산합니다. 행과 열의 개수는 각각 3×1 숫자형 배열로 표시됩니다.
[nrows,ncols] = structfun(@size,S)
nrows = 3×1
1
3
4
ncols = 3×1
10
2
4
입력 인수
func
— 적용할 함수
함수 핸들
입력 스칼라 구조체의 필드에 적용할 함수로, 함수 핸들로 지정됩니다.
func
는 둘 이상의 함수 파일에 대응할 수 있으며, 따라서 일련의 오버로드된 함수를 나타낼 수 있습니다. 이러한 경우 MATLAB®은 입력 인수의 클래스에 따라 어떤 함수를 호출할지를 결정합니다.
예: A = structfun(@max,S)
는 S
에 있는 각 필드의 최댓값을 반환합니다.
S
— 입력 구조체
스칼라 구조체
입력 구조체로, 스칼라 구조체로 지정됩니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: A = structfun(@mean,S,'UniformOutput',false)
는 S
와 동일한 필드를 가진 구조체에 mean
의 출력값을 반환합니다.
UniformOutput
— true 또는 false
true
(디폴트 값) | false
true 또는 false로, 'UniformOuput'
과 함께 true
(1
)나 false
(0
)가 쉼표로 구분되어 지정됩니다.
| 설명 |
---|---|
|
|
|
|
ErrorHandler
— 오류를 포착하는 함수
함수 핸들
오류를 포착하는 함수로, 'ErrorHandler'
와 함께 함수 핸들이 쉼표로 구분되어 지정됩니다. func
에서 오류가 발생하면 'ErrorHandler'
로 지정된 오류 핸들러는 오류를 포착하고 함수에 지정된 동작을 수행합니다. 오류 핸들러는 오류를 발생시키거나 func
와 동일한 개수의 출력값을 반환해야 합니다. 'UniformOutput'
의 값이 true인 경우 오류 핸들러의 출력 인수는 스칼라여야 하며 func
의 출력값과 데이터형이 같아야 합니다.
오류 핸들러의 첫 번째 입력 인수는 다음 필드를 포함하는 구조체입니다.
identifier
— 오류 IDmessage
— 오류 메시지 텍스트index
— 입력 배열 중func
가 오류를 발생시킨 위치에 대한 선형 인덱스
오류 핸들러에 대한 나머지 입력 인수는 func
에서의 오류 발생을 초래한, func
호출에 대한 입력 인수입니다.
func
가 두 개의 double형을 출력 인수로 반환한다고 가정하겠습니다. 오류 핸들러를 'ErrorHandler',@errorFunc
로 지정할 수 있습니다. 여기서 errorFunc
는 경고를 발생시키고 두 개의 출력 인수를 반환하는 함수입니다.
function [A,B] = errorFunc(S,varargin) warning(S.identifier, S.message); A = NaN; B = NaN; end
'ErrorHandler'
를 지정하지 않을 경우 structfun
함수는 func
에서 발생한 오류를 다시 발생시킵니다.
출력 인수
A
— 출력 배열
임의 데이터형으로 구성된 열 벡터 | 스칼라 구조체
출력 배열로, 임의 데이터형으로 구성된 열 벡터 또는 스칼라 구조체로 반환됩니다.
기본적으로 structfun
은 func
의 출력값을 열 벡터에 결합합니다. func
는 스칼라를 반환해야 합니다. func
가 객체를 반환할 경우 객체가 속한 클래스는 다음 요구 사항을 충족해야 합니다.
객체 배열에 대한 선형 인덱싱에 따른 할당 지원
입력값과 같은 크기의 배열을 반환하는
reshape
메서드 포함
'UniformOutput'
이름-값 쌍의 인수 값이 false
(0
)인 경우 structfun
은 출력값을 스칼라 구조체의 필드로 반환합니다. 이 경우 func
의 출력값은 크기 제한이 없으며 서로 다른 데이터형을 가질 수 있습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
옵션
ErrorHandler
는 지원되지 않습니다.출력값 개수는 3개 이하여야 합니다.
스레드 기반 환경
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)