Main Content

deal

입력값을 출력값에 배포

설명

예제

참고

대부분의 경우에는 deal 함수가 필요하지 않습니다. 셀형 배열과 구조체 필드의 내용에 액세스할 때는 다음 구문에 나와 있는 것처럼 대신 배열 인덱싱과 쉼표로 구분된 목록을 사용하십시오.

[A1,...,An] = C{:}
[B1,...,Bn] = S(:).field

자세한 내용은 쉼표로 구분된 목록(CSV) 항목을 참조하십시오.

그러나 일반적으로 단일 출력값을 반환하는 연산에서 여러 개의 출력값이 필요한 경우 deal이 유용할 수 있습니다. 예를 들어, 다음과 같은 목적으로 deal을 사용할 수 있습니다.

  • 셀형 배열의 여러 셀에 값 할당.

  • 비 스칼라 구조체형 배열의 필드에 값 할당.

  • 익명 함수에서 여러 출력값 반환.

[B1,...,Bn] = deal(A1,...,An)은 입력 인수 A1,...,An을 복사하여 출력 인수 B1,...,Bn으로 반환합니다. 이는 B1 = A1, ..., Bn = An과 동일합니다. 이 구문에서 입력 인수와 출력 인수의 개수는 동일해야 합니다.

[B1,...,Bn] = deal(A)는 단일 입력 인수 A를 복사하여 출력 인수 B1,...,Bn으로 반환합니다. 이는 B1 = A, ..., Bn = A와 동일합니다. 이 구문에서 임의 개수의 출력 인수를 지정할 수 있습니다.

예제

모두 축소

셀이 비어 있는 1×3 셀형 배열을 만듭니다.

C = cell(1,3)
C=1×3 cell array
    {0x0 double}    {0x0 double}    {0x0 double}

변수 3개를 만듭니다. deal을 사용하여 변수의 값을 C의 셀에 할당합니다. 구문 C{:}는 쉼표로 구분된 셀 목록을 만듭니다. 셀의 내용에는 중괄호를 사용하여 액세스할 수 있습니다. deal을 호출할 때 이 목록을 출력 인수 목록으로 취급할 수 있습니다.

A1 = 100;
A2 = "foo";
A3 = 1:5;
[C{:}] = deal(A1,A2,A3)
C=1×3 cell array
    {[100]}    {["foo"]}    {[1 2 3 4 5]}

인덱스를 사용하여 셀의 일부에 값을 할당할 수도 있습니다. 예를 들어, 1×5 셀형 배열 D를 만들어 보겠습니다.

D = cell(1,5)
D=1×5 cell array
    {0x0 double}    {0x0 double}    {0x0 double}    {0x0 double}    {0x0 double}

이 구문은 값을 D의 처음 세 개 셀에 할당하고 나머지 셀은 비워 둡니다.

[D{1:3}] = deal(A1,A2,A3)
D=1×5 cell array
    {[100]}    {["foo"]}    {[1 2 3 4 5]}    {0x0 double}    {0x0 double}

먼저 1개의 필드를 갖는 1×3 구조체형 배열을 만듭니다.

S.a = [];
S(2).a = [];
S(3).a = [];
S.a
ans =

     []


ans =

     []


ans =

     []

그런 다음 deal을 사용하여 필드에 값을 할당합니다. 구문 S.a는 구조체형 배열의 각 구조체에 대해 쉼표로 구분된 필드 목록을 만듭니다. deal을 호출할 때 이 목록을 출력 인수 목록으로 취급할 수 있습니다.

A1 = 100;
A2 = "foo";
A3 = 1:5;
[S.a] = deal(A1,A2,A3)
S=1×3 struct array with fields:
    a

S.a
ans = 100
ans = 
"foo"
ans = 1×5

     1     2     3     4     5

구조체형 배열이 존재하지 않을 경우, 할당하는 값에 해당하는 만큼의 충분한 인덱스를 지정하여 구조체형 배열을 만들 수 있습니다. 인덱스를 사용하여 구조체의 일부에 값을 할당할 수도 있습니다. 예를 들어, S가 1×6 구조체형 배열이라면 다음 구문은 처음 3개 구조체에 값을 할당합니다.

[S(1:3).a] = deal(A1,A2,A3)
S=1×3 struct array with fields:
    a

S.a
ans = 100
ans = 
"foo"
ans = 1×5

     1     2     3     4     5

함수가 하나의 실행 가능한 명령문으로 구성된 경우에 한해, 프로그램 파일을 만들지 않고 익명 함수를 만들어서 함수를 정의할 수 있습니다. 익명 함수에서 여러 출력 인수를 반환하는 한 가지 방법은 deal 함수를 하나의 실행 가능한 명령문으로 호출하는 것입니다.

deal 함수를 사용하여 숫자와 그 제곱, 세제곱 및 네제곱을 반환하는 익명 함수를 만듭니다. 익명 함수를 저장하려면 함수 핸들에 할당하십시오.

powers1234 = @(x) deal(x,x.^2,x.^3,x.^4)
powers1234 = function_handle with value:
    @(x)deal(x,x.^2,x.^3,x.^4)

powers1234를 호출하고 그 출력값을 변수에 할당합니다. deal이 반환하는 모든 출력값을 할당해야 합니다.

[X1,X2,X3,X4] = powers1234(2)
X1 = 2
X2 = 4
X3 = 8
X4 = 16

원치 않는 출력값을 삭제하려면 ~ 연산자를 사용하십시오.

[~,~,X3,X4] = powers1234(2)
X3 = 8
X4 = 16

입력 인수

모두 축소

입력 배열입니다. 여기서 n은 입력값의 개수입니다.

출력 인수

모두 축소

출력 배열입니다. 여기서 n은 출력값의 개수입니다.

  • 셀형 배열을 구조체형 배열로 변환하거나 구조체형 배열을 셀형 배열로 변환하려면 deal이 아닌 cell2struct 함수와 struct2cell 함수를 사용하십시오.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨