typecast
기본 데이터를 변경하지 않고 데이터형 변환
설명
예제
정수를 같은 저장 공간 크기의 부호 없는 정수로 변환하기
정수를 같은 저장 공간 크기의 부호 없는 정수로 변환합니다.
X = int16(-1)
X = int16
-1
Y = typecast(X,'uint16')
Y = uint16
65535
비트 패턴을 16진수 표현으로 표시합니다. typecast
를 사용하여 데이터형을 변환하면 기본 데이터가 변경되지 않습니다.
format hex
X
X = int16
ffff
Y = typecast(X,'uint16')
Y = uint16
ffff
8비트 정수를 단정밀도로 변환하기
8비트 정수로 구성된 1×4 벡터를 생성합니다.
X = int8([77 60 43 26])
X = 1x4 int8 row vector
77 60 43 26
4바이트(32비트)의 저장 공간을 사용하는 8비트 정수 4개를 동일한 4바이트의 저장 공간을 사용하는 단정밀도 숫자로 변환합니다.
Y = typecast(X,'single')
Y = single
3.5411e-23
비트 패턴을 16진수 표현으로 표시합니다. 16진수 표기법에서, 1바이트(8비트)는 2자리 숫자로 표현됩니다. typecast
함수는 데이터를 수정하지 않고 비트 패턴을 재배열합니다.
format hex
X
X = 1x4 int8 row vector
4d 3c 2b 1a
Y = typecast(X,'single')
Y = single
1a2b3c4d
32비트 정수를 8비트 정수로 변환하기
32비트 부호 없는 정수로 구성된 1×3 벡터를 만듭니다.
X = uint32([1 255 256])
X = 1x3 uint32 row vector
1 255 256
typecast
를 사용하여 X
를 8비트 부호 없는 정수로 형변환합니다. 각 32비트 값은 4개의 8비트 세그먼트로 나누어집니다. 다음 코드를 리틀 엔디안 시스템에서 실행하면 다음과 같은 결과가 생성됩니다.
Y = typecast(X,'uint8')
Y = 1x12 uint8 row vector
1 0 0 0 255 0 0 0 0 1 0 0
X
의 세 번째 요소인 256은 8비트가 담을 수 있는 최댓값을 초과합니다. 따라서 Y(9)에서 변환된 값은 Y(10)으로 오버플로됩니다.
Y(9:12)
ans = 1x4 uint8 row vector
0 1 0 0
기본 데이터를 변경하지 않고 Y
를 32비트 부호 없는 정수로 다시 변환할 수 있습니다.
X2 = typecast(Y,'uint32')
X2 = 1x3 uint32 row vector
1 255 256
typecast
의 출력값과 cast
의 출력값을 비교하여 두 함수 사이의 차이를 확인합니다.
Z = cast(X,'uint8')
Z = 1x3 uint8 row vector
1 255 255
X2 = cast(Z,'uint32')
X2 = 1x3 uint32 row vector
1 255 255
8비트 정수를 16비트 정수로 변환하기
더 작은 데이터형(uint8
)의 정수를 더 큰 데이터형(uint16
)으로 형변환해 보겠습니다. 16진수 표현을 사용하여 재배열된 비트 패턴을 표시합니다. typecast
함수는 리틀 엔디안 형식으로 출력값을 반환하며, 입력 데이터의 8비트 세그먼트 4개를 결합하여 16비트 세그먼트 2개를 생성합니다.
format hex
X = uint8([44 55 66 77])
X = 1x4 uint8 row vector
2c 37 42 4d
Y = typecast(X,'uint16')
Y = 1x2 uint16 row vector
372c 4d42
swapbytes
함수를 사용하여 리틀 엔디안 출력값을 빅 엔디안 출력값으로 변환할 수 있으며, 그 반대로도 변환할 수 있습니다.
Y = swapbytes(typecast(X,'uint16'))
Y = 1x2 uint16 row vector
2c37 424d
입력 인수
X
— 입력 배열
스칼라 | 벡터
입력 배열로, 스칼라 또는 벡터로 지정됩니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
type
— 새로운 데이터형
'single'
| 'double'
| 'int8'
| 'int16'
| 'int32'
| 'int64'
| 'uint8'
| 'uint16'
| 'uint32'
| 'uint64'
새로운 데이터형으로, 'single'
, 'double'
, 'int8'
, 'int16'
, 'int32'
, 'int64'
, 'uint8'
, 'uint16'
, 'uint32'
또는 'uint64'
로 지정됩니다.
type
의 비트 크기가 X
의 각 요소의 비트 크기보다 n
배 큰 경우, X
를 데이터형 type
으로 변환하려면 X
에 n
의 배수에 해당하는 개수의 요소가 있어야 합니다. 그렇지 않으면 MATLAB®은 오류를 발생시킵니다.
팁
typecast
는 입력 데이터를 변경하지 않는다는 점에서 MATLABcast
함수와 다릅니다.typecast
는 출력값Y
에 항상 입력값X
에 있는 것과 같은 바이트 수를 반환합니다. 예를 들어typecast
를 사용하여 16비트 정수 1000을uint8
형으로 형변환하면, 8비트 세그먼트 2개(3과 232)에 비희소 16비트를 반환하여 원래 값(3*256 + 232 = 1000)을 유지합니다. 반면,cast
함수는 입력값을 255로 잘라냅니다.typecast
출력값의 형식은 사용하는 시스템에 따라 다를 수 있습니다. 일부 컴퓨터 시스템에서는 최하위 바이트부터 데이터를 저장하는 반면(리틀 엔디안이라는 정렬), 그 밖의 다른 시스템에서는 최상위 바이트부터 저장합니다(빅 엔디안이라고 함).swapbytes
함수를 사용하면 리틀 엔디안에서 빅 엔디안으로 바이트 순서를 반전할 수 있으며, 그 반대로도 반전할 수 있습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
데이터형 인수의 값은 소문자여야 합니다.
MATLAB Function 블록에서 상속된 입력 포트 데이터형과 함께
typecast
를 사용하면 크기 오류가 발생할 수 있습니다. 이 오류를 피하려면 블록 입력 포트 데이터형을 명시적으로 지정하십시오.정수 입력값이나 결과 클래스는 타깃 하드웨어의 C 유형에 직접 매핑해야 합니다.
입력값은 가변 길이 벡터이거나 고정 크기 벡터여야 합니다. Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder) 항목을 참조하십시오.
출력 벡터는 항상 입력 벡터와 방향이 같아야 합니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
데이터형 인수의 값은 소문자여야 합니다.
MATLAB Function 블록에서 상속된 입력 포트 데이터형과 함께
typecast
를 사용하면 크기 오류가 발생할 수 있습니다. 이 오류를 피하려면 블록 입력 포트 데이터형을 명시적으로 지정하십시오.정수 입력값이나 결과 클래스는 타깃 하드웨어의 C 유형에 직접 매핑해야 합니다.
입력값은 가변 길이 벡터이거나 고정 크기 벡터여야 합니다.
출력 벡터는 항상 입력 벡터와 방향이 같아야 합니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
이 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
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)