Main Content

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

structfun

스칼라 구조체의 각 필드에 함수 적용

설명

예제

A = structfun(func,S)는 스칼라 구조체 S의 각 필드에 한 번에 하나씩 함수 func를 적용합니다. 그런 다음, structfunfunc의 출력값을 열 벡터 A에 결합합니다. 입력 인수 func는 하나의 입력 인수를 받고 스칼라를 반환하는 함수에 대한 함수 핸들입니다. func의 출력값은 해당 데이터형의 객체를 결합할 수 있는 한, 어떤 데이터형이든 될 수 있습니다. A의 요소 개수는 S의 필드 개수와 같습니다.

사용자는 structfunA의 요소를 계산하는 순서를 지정할 수 없으며, 또는 특정 순서로 계산을 수행하기를 기대할 수도 없습니다.

예제

A = structfun(func,S,Name,Value)는 하나 이상의 Name,Value 쌍 인수를 추가 옵션으로 지정하여 func를 적용할 때 사용합니다. 예를 들어, 구조체로 출력값을 반환하려면 'UniformOutput',false를 지정하십시오. func가 배열에 결합할 수 없는 값을 반환할 경우 A를 구조체로 반환할 수 있습니다. 반환된 구조체는 S와 동일한 필드를 가집니다.

예제

[A1,...,Am] = structfun(___)funcm개 출력값을 반환할 경우 여러 개의 출력 배열 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

Figure contains an axes object. The axes object contains 3 objects of type line.

행렬이 포함된 필드를 갖는 스칼라 구조체를 만듭니다.

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는 둘 이상의 함수 파일에 대응할 수 있으며, 따라서 일련의 오버로드된 함수를 나타낼 수 있습니다. 이러한 경우 MATLAB®은 입력 인수의 클래스에 따라 어떤 함수를 호출할지를 결정합니다.

예: A = structfun(@max,S)S에 있는 각 필드의 최댓값을 반환합니다.

입력 구조체로, 스칼라 구조체로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: A = structfun(@mean,S,'UniformOutput',false)S와 동일한 필드를 가진 구조체에 mean의 출력값을 반환합니다.

true 또는 false로, 'UniformOuput'과 함께 true(1)나 false(0)가 쉼표로 구분되어 지정됩니다.

'UniformOutput'의 값

설명

true (1)

funcstructfun이 열 벡터에 결합하는 스칼라를 반환해야 합니다.

false (0)

structfun은 하나 이상의 스칼라 구조체에 func의 출력값을 반환합니다. 출력 스칼라 구조체는 입력 스칼라 구조체와 동일한 필드를 가집니다. func의 출력값은 어떤 데이터형이든 가질 수 있습니다.

오류를 포착하는 함수로, 'ErrorHandler'와 함께 함수 핸들이 쉼표로 구분되어 지정됩니다. func에서 오류가 발생하면 'ErrorHandler'로 지정된 오류 핸들러는 오류를 포착하고 함수에 지정된 동작을 수행합니다. 오류 핸들러는 오류를 발생시키거나 func와 동일한 개수의 출력값을 반환해야 합니다. 'UniformOutput'의 값이 true인 경우 오류 핸들러의 출력 인수는 스칼라여야 하며 func의 출력값과 데이터형이 같아야 합니다.

오류 핸들러의 첫 번째 입력 인수는 다음 필드를 포함하는 구조체입니다.

  • identifier — 오류 ID

  • message — 오류 메시지 텍스트

  • 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에서 발생한 오류를 다시 발생시킵니다.

출력 인수

모두 축소

출력 배열로, 임의 데이터형으로 구성된 열 벡터 또는 스칼라 구조체로 반환됩니다.

기본적으로 structfunfunc의 출력값을 열 벡터에 결합합니다. func는 스칼라를 반환해야 합니다. func가 객체를 반환할 경우 객체가 속한 클래스는 다음 요구 사항을 충족해야 합니다.

  • 객체 배열에 대한 선형 인덱싱에 따른 할당 지원

  • 입력값과 같은 크기의 배열을 반환하는 reshape 메서드 포함

'UniformOutput' 이름-값 쌍의 인수 값이 false(0)인 경우 structfun은 출력값을 스칼라 구조체의 필드로 반환합니다. 이 경우 func의 출력값은 크기 제한이 없으며 서로 다른 데이터형을 가질 수 있습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨