Main Content

compose

데이터 형식을 여러 string형으로 지정

설명

예제

str = compose(formatSpec,A)formatSpec으로 지정된 형식 지정 연산자를 사용하여 입력 배열 A의 데이터 값의 형식을 지정하고, 결과로 생성되는 텍스트를 str로 반환합니다. compose 함수는 A의 값을 열 순서대로 형식 지정합니다. formatSpec이 string형 배열이면 출력 배열 str도 string형 배열입니다. 그렇지 않으면, str은 문자형 벡터로 구성된 셀형 배열입니다.

또한, composeformatSpec의 이스케이프 문자 시퀀스를 변환합니다. 이스케이프 문자 시퀀스는 인쇄할 수 없는 문자를 나타내거나 새 줄 또는 탭과 같은 동작을 지정합니다.

compose 함수는 sprintf와 달리 여러 개의 서식 지정된 텍스트 조각을 string형 배열이나 문자형 벡터로 구성된 셀형 배열로 반환할 수 있습니다. sprintf 함수는 string형 스칼라 또는 문자형 벡터만 반환합니다.

  • A에 행이 여러 개 있는 경우 composestr을 동일한 행 개수를 갖는 string형 배열이나 셀형 배열로 반환합니다. composestr의 각 행에다 A의 대응하는 행에 있는 형식 지정된 값을 사용하여 formatSpec을 적용합니다.

  • A의 열 개수가 formatSpec의 연산자 개수를 초과하는 경우 composestr에 열을 추가해 formatSpec을 적용합니다. 초과하는 A의 열은 str에 새로 추가된 열에 형식 지정된 값을 적용합니다.

  • A의 열 개수가 formatSpec의 연산자 개수보다 적은 경우 compose는 이러한 연산자를 사용하여 값의 형식을 지정하지 않습니다. 대신, composestr에 변경되지 않은 형식 지정 연산자를 추가합니다. 그러나 compose\\%%를 제외한 모든 이스케이프 문자 시퀀스를 변환합니다.

str = compose(formatSpec,A1,...,AN)은 여러 입력 배열의 데이터 값의 형식을 지정하고 형식이 지정된 모든 값을 결합합니다. composeformatSpec의 형식 지정 연산자를 사용하여 입력 배열의 데이터를 변환하면 다음 입력 배열에 이 형식 지정 연산자를 사용할 수 없게 됩니다.

예를 들어, formatSpec"%f %f %d %s"이고, A1에 두 개의 열이 있는 경우 연산자 "%f %f"A1의 값에만 적용됩니다. A2 또는 다른 입력 배열에는 이러한 연산자를 적용할 수 없습니다. compose는 남아 있는 연산자인 "%d %s"A2,...,AN에 적용합니다.

마지막 입력 배열 AN의 열 개수가 나머지 연산자의 개수를 초과하는 경우 compose는 이전 구문에서 설명한 것처럼 str에 열을 더 추가합니다. AN의 열 개수가 나머지 연산자의 개수보다 적은 경우 compose는 변경되지 않은 마지막 연산자를 str에 추가합니다.

예제

str = compose(txt)txt의 이스케이프 문자 시퀀스를 변환합니다.

  • txt에 형식 지정 연산자가 포함되어 있지 않은 경우 compose는 모든 이스케이프 문자 시퀀스를 변환합니다. 다른 모든 문자는 변환되지 않습니다.

  • txt에 형식 지정 연산자가 포함되어 있는 경우 compose\\%%를 제외한 모든 이스케이프 문자 시퀀스를 변환합니다. 형식 지정 연산자를 비롯하여 다른 모든 문자는 변경되지 않습니다.

예제

모두 축소

pi의 형식을 소수점 이하 여덟 자리로 지정하고 이를 string형으로 반환합니다.

A = pi
A = 3.1416

큰따옴표를 사용하여 string형을 생성할 수 있습니다. formatSpec을 string형으로 지정합니다.

formatSpec = "%.8f"
formatSpec = 
"%.8f"
str = compose(formatSpec,A)
str = 
"3.14159265"

pie의 값이 포함된 숫자형 배열을 만듭니다. 정밀도가 서로 다른 %e%f 연산자를 사용합니다.

A = [pi exp(1)]
A = 1×2

    3.1416    2.7183

formatSpec = "The value of pi is %.2e; the value of e is %.5f.";
str = compose(formatSpec,A)
str = 
"The value of pi is 3.14e+00; the value of e is 2.71828."

숫자형 배열에서 가져온 값의 형식을 지정합니다. 숫자형 배열에 여러 개의 행이 있으므로 compose는 동일한 행 개수를 갖는 string형 배열을 반환합니다.

X = [1 2 3 4 5]';
Y = X.^2;

큰따옴표를 사용하여 string형을 생성할 수 있습니다. formatSpec을 string형으로 지정하고 형식 지정된 값을 string형 배열로 반환합니다.

formatSpec = "%d.^2 = %d";
str = compose(formatSpec,X,Y)
str = 5x1 string
    "1.^2 = 1"
    "2.^2 = 4"
    "3.^2 = 9"
    "4.^2 = 16"
    "5.^2 = 25"

데이터 배열의 열 개수가 연산자 개수와 같지 않을 경우 값의 형식을 지정합니다. A의 열 개수가 더 많은 경우 compose는 출력 string형 배열에 열을 추가해 formatSpec을 적용합니다.

큰따옴표를 사용하여 string형을 생성할 수 있습니다. formatSpec을 string형으로 지정합니다.

formatSpec = "The time is %d:%d";
A = [8 15 9 30;
     10 20 11 50];
str = compose(formatSpec,A)
str = 2x2 string
    "The time is 8:15"     "The time is 9:30" 
    "The time is 10:20"    "The time is 11:50"

A의 열 개수가 더 적은 경우 값의 형식을 지정합니다.

formatSpec = "Check-in time %d:%d; Check-out time %d:%d";
A = [12 27;
     11 16];
str = compose(formatSpec,A)
str = 2x1 string
    "Check-in time 12:27; Check-out time %d:%d"
    "Check-in time 11:16; Check-out time %d:%d"

A에 열이 두 개만 있으므로 composeformatSpec의 처음 두 개 형식 지정 연산자만 사용하여 값의 형식을 지정합니다. compose는 나머지 형식 지정 연산자는 변경하지 않고 그대로 둡니다.

이스케이프 문자 시퀀스를 포함하는 string형 배열을 만들어 가로 탭을 지정합니다. compose 함수를 사용하여 \t 이스케이프 문자를 변환합니다. 큰따옴표를 사용하여 string형을 생성할 수 있습니다.

str = ["Name\tDate of Birth\tLocation";...
       "Jones\t10/20/2015\tUK";...
       "Simpson\t09/12/2015\tUSA"];
newStr = compose(str)
newStr = 3x1 string
    "Name->Date of Birth->Location"
    "Jones->10/20/2015->UK"
    "Simpson->09/12/2015->USA"

또 다른 \ 문자를 사용하여 \n이 변환되지 않도록 합니다.

str = "Don't escape the second\n\\n escaped-character sequence.";
newStr = compose(str)
newStr = 
    "Don't escape the second
     \n escaped-character sequence."

입력 인수

모두 축소

출력 필드의 형식으로, 형식 지정 연산자를 사용하여 지정됩니다. formatSpec은 일반 텍스트와 특수 문자를 포함할 수도 있습니다.

formatSpec\n과 같이 이스케이프 문자를 나타내는 리터럴 텍스트가 포함된 경우 compose 함수는 이스케이프 문자를 변환합니다.

formatSpec은 작은따옴표로 묶인 문자형 벡터 또는 string형 스칼라 내에 포함된 형식 지정자로 구성된 배열일 수 있습니다.

형식 지정 연산자

형식 지정 연산자는 퍼센트 기호 %로 시작하고 변환 문자로 끝납니다. 변환 문자는 반드시 필요합니다. %와 변환 문자 사이에는 필요에 따라 플래그, 필드 너비, 정밀도 및 하위유형 연산자를 지정할 수 있습니다.

변환 문자

다음 표에는 숫자형 데이터와 문자 데이터의 형식을 텍스트로 지정하는 변환 문자가 나와 있습니다.

값 유형변환세부 정보

정수, 부호 있음

%d 또는 %i

10진법

정수, 부호 없음

%u

10진법

%o

8진법(8진수)

%x

16진법(16진수), 소문자 af

%X

%x와 동일, 대문자 AF

부동소수점 숫자

%f

고정소수점 표기법(정밀도 연산자를 사용하여 소수점 이하 자릿수를 지정합니다.)

%e

지수 표기법(예: 3.141593e+00)(정밀도 연산자를 사용하여 소수점 이하 자릿수를 지정합니다.)

%E

%e와 동일하되 대문자임(예: 3.141593E+00)(정밀도 연산자를 사용하여 소수점 이하 자릿수를 지정합니다.)

%g

%e 또는 %f 중 더 간단한 형식(후행 0을 포함하지 않음)(정밀도 연산자를 사용하여 소수점 이하 유효 자릿수를 지정합니다.)

%G

%E 또는 %f 중 더 간단한 형식(후행 0을 포함하지 않음)(정밀도 연산자를 사용하여 소수점 이하 유효 자릿수를 지정합니다.)

문자 또는 string형

%c

단일 문자

%s

문자형 벡터 또는 string형 배열. 출력 텍스트의 유형은 formatSpec의 유형과 같습니다.

선택적 연산자

플래그, 필드 너비, 정밀도, 하위유형 등의 선택적 연산자는 출력 텍스트의 형식을 추가로 정의합니다.

  • 플래그

    '–'

    왼쪽 맞춤.
    예: %-5.2f
    예: %-10s

    '+'

    모든 숫자형 값에 대해 항상 부호 문자(+ 또는 –)를 출력합니다.
    예: %+5.2f
    텍스트 오른쪽 맞춤.
    예: %+10s

    ' '

    값 앞에 공백을 삽입합니다.
    예: % 5.2f

    '0'

    값 앞의 필드 너비를 0으로 채웁니다.
    예: %05.2f

    '#'

    선택한 수치 변환을 수정합니다.

    • %o, %x 또는 %X의 경우 0, 0x 또는 0X 접두사를 출력합니다.

    • %f, %e 또는 %E의 경우 정밀도가 0이어도 소수점을 출력합니다.

    • %g 또는 %G의 경우 후행 0 또는 소수점을 제거하지 않습니다.

    예: %#5.0f

  • 필드 너비

    출력할 최소 문자 수입니다.

    예: '%5d'intmax 2147483647로 출력합니다. intmax가 반환하는 값이 출력할 최소 문자 수를 초과하기 때문입니다.

    출력할 문자 수가 필드 너비보다 적은 경우 compose 함수는 플래그에 의해 달리 지정되지 않은 이상 값 앞에 공백을 사용하여 필드 너비를 채웁니다.

    그러나 num2str 함수는 공백을 사용하여 필드 너비를 채우지 않습니다.

  • 정밀도

    표시할 자릿수입니다.

    %f, %e 또는 %E의 경우

    소수점 오른쪽의 자릿수입니다.
    예: '%.4f'pi'3.1416'으로 출력함

    %g 또는 %G의 경우

    유효 자릿수입니다.
    예: '%.4g'pi'3.142'로 출력함

    예: '%6.4f'pi'3.1416'으로 출력합니다.

    참고

    부동소수점 값에 대한 입력 숫자 데이터형의 정밀도를 초과하는 정밀도 연산자를 지정하는 경우 결과는 지정한 정밀도에 대한 입력값과 일치하지 않을 수 있습니다. 결과는 사용자의 컴퓨터 하드웨어와 운영 체제에 따라 다릅니다.

  • 하위유형

    하위유형 연산자를 사용하여 부동소수점 값을 8진수 값, 10진수 값, 16진수 값 중 하나로 출력할 수 있습니다. 하위유형 연산자는 변환 문자 바로 앞에 옵니다. 다음 표에는 하위유형을 사용할 수 있는 변환이 나와 있습니다.

    입력값 유형

    하위유형 및 변환 문자

    출력값 유형

    부동소수점 숫자

    %bx 또는 %bX
    %bo
    %bu

    배정밀도 16진수, 8진수 또는 십진수 값
    예: %bxpi400921fb54442d18로 출력함

    %tx 또는 %tX
    %to
    %tu

    단정밀도 16진수, 8진수 또는 십진수 값
    예: %txpi40490fdb로 출력함

형식 지정 연산자 앞이나 뒤의 텍스트

formatSpec은 퍼센트 기호 % 앞이나 변환 문자 뒤에 텍스트를 추가로 포함할 수도 있습니다. 가능한 텍스트는 다음과 같습니다.

  • 출력할 일반 텍스트.

  • 일반 텍스트로 입력할 수 없는 특수 문자. 다음 표에는 formatSpec에서 특수 문자를 나타내는 방식이 나와 있습니다.

    특수 문자

    표현

    작은따옴표

    ''

    퍼센트 문자

    %%

    백슬래시

    \\

    경보

    \a

    백스페이스

    \b

    폼 피드(FF)

    \f

    새 줄(Newline)

    \n

    캐리지 리턴

    \r

    가로 탭

    \t

    세로 탭

    \v

    그 Unicode® 숫자형 값을 16진수 N으로 나타낼 수 있는 문자

    \xN

    예: compose('\x5A')'Z'를 반환합니다.

    그 Unicode 숫자형 값을 8진수 N으로 나타낼 수 있는 문자

    \N

    예: compose('\132')'Z'를 반환합니다.

형식 지정 연산자를 사용한 변환의 중요 동작

  • 수치 변환은 복소수의 실수부만 출력합니다.

  • 숫자형 값에 대한 텍스트 변환과 같이 데이터에 맞지 않는 변환을 지정하는 경우 MATLAB®은 지정된 변환을 무시하고 %e를 사용합니다.

    예: '%s'pi3.141593e+00으로 변환합니다.

  • 텍스트 변환(%c%s)을 정수 값에 적용하는 경우 MATLAB은 유효한 문자 코드에 대응하는 값을 문자로 변환합니다.

    예: '%s'[65 66 67]ABC로 변환합니다.

숫자형 배열, 문자형 배열 또는 string형 배열로, 스칼라, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

입력 텍스트로, string형 배열, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. composetxt의 모든 이스케이프 문자 시퀀스를 변환합니다. 예를 들어, compose\n을 새 줄 문자로 변환합니다.

데이터형: string | char | cell

출력 인수

모두 축소

서식 지정된 텍스트로, string형 배열이나 문자형 벡터로 구성된 셀형 배열로 반환됩니다.

데이터형: string | cell

확장 기능

버전 내역

R2016b에 개발됨