fwrite
이진 파일(Binary File)에 데이터 쓰기
구문
설명
count = fwrite(___)
는 fwrite
가 파일에 성공적으로 쓴 A
요소의 개수를 반환합니다. 이 구문은 위에 열거된 구문 중 하나의 입력 인수에 사용할 수 있습니다.
예제
uint8형 데이터를 이진 파일에 쓰기
쓰려는 파일 nine.bin
을 엽니다. fopen
호출 시 'w'
를 사용하여 쓰기 권한을 지정합니다.
fileID = fopen('nine.bin','w');
fopen
은 파일 ID fileID
를 반환합니다.
1에서 9까지의 정수를 8비트의 부호 없는 정수로 씁니다.
fwrite(fileID,[1:9]);
파일을 닫습니다.
fclose(fileID);
4바이트 정수를 이진 파일에 쓰기
쓰려는 파일 magic5.bin
을 엽니다.
fileID = fopen('magic5.bin','w');
5×5 마방진의 25개 요소를 씁니다. precision
인수 'integer*4'
를 사용하여 4바이트 정수를 씁니다.
fwrite(fileID,magic(5),'integer*4');
파일을 닫습니다.
fclose(fileID);
이진 파일에 데이터 추가
배정밀도 부동소수점 숫자로 저장된, 4×4 마방진의 요소를 포함하는 이진 파일을 씁니다.
fileID = fopen('magic4.bin','w'); fwrite(fileID,magic(4),'double'); fclose(fileID);
파일에 데이터 추가를 가능하게 하는 쓰기 권한을 사용하여 파일 magic4.bin
을 엽니다. fopen
호출 시 파일 액세스 유형 'a'
를 지정합니다.
fileID = fopen('magic4.bin','a');
파일에 0으로 이루어진 4×4 행렬을 추가합니다. 그런 다음 파일을 닫습니다.
fwrite(fileID,zeros(4),'double');
fclose(fileID);
빅 엔디안 바이트 순서를 사용하여 이진 파일 쓰기
빅 엔디안 시스템에서 사용할 수 있도록 파일 myfile.bin
에 배정밀도 난수를 씁니다. fwrite
호출 시 'ieee-be'
의 machinefmt
값을 지정하여 빅 엔디안 바이트 순서를 나타냅니다.
fileID = fopen('myfile.bin','w'); fwrite(fileID,rand(4),'double','ieee-be'); fclose(fileID);
입력 인수
fileID
— 파일 ID
정수 | 1 | 2
파일 ID로, fopen
에서 가져온 정수로 지정됩니다. 표준 출력(화면)의 경우에는 1
, 표준 오류의 경우에는 2
로 지정됩니다.
A
— 쓰려는 데이터
숫자형 배열 | 문자형 배열 | string형 배열
쓰려는 데이터로, 숫자형 배열, 문자형 배열 또는 string형 배열로 지정됩니다.
fwrite
는 문자형 데이터 또는 string형 데이터의 쓰기를 지원하지만, 이렇게 할 경우 예기치 않은 동작이 발생할 수 있으므로 권장되지 않습니다.
fwrite
를 사용하여 문자형 데이터 또는 string형 데이터를 쓸 경우 fopen
을 호출할 때 텍스트 인코딩을 지정하여 읽거나 쓰기 위한 파일을 연 다음 정밀도를 char
로 지정하십시오.
예: [1,2,3;4,5,6]
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
복소수 지원 여부: 예
precision
— 쓰려는 값의 클래스 및 크기
'uint8'
(디폴트 값) | 문자형 벡터 | string형 스칼라
쓰려는 값의 클래스 및 크기(비트 수)로, 다음 정밀도 열에 나열된 문자형 벡터 또는 string형 스칼라 중 하나로 지정됩니다.
값 유형 | 정밀도 | 비트(바이트) |
---|---|---|
정수, 부호 없음 |
|
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
정수, 부호 있음 |
|
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
부동소수점 숫자 |
|
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
문자 |
|
|
| MATLAB® |
bit
또는 n
ubit
으로 정밀도가 지정된 경우 n
fwrite
는 범위 밖에 있는 모든 값에 대해 포화(Saturate)됩니다.
참고
MATLAB에 NaN
및 Inf
값을 유지하려면 double
형 또는 single
형 클래스의 데이터를 읽고 쓰십시오.
skip
— 건너뛸 바이트의 수
0 (디폴트 값) | 스칼라
각 값을 쓰기 전에 건너뛸 바이트 수로, 스칼라로 지정됩니다. bit
또는 n
ubit
으로 n
precision
을 지정하는 경우 skip
을 비트 단위로 지정해야 합니다.
skip
인수를 사용하여 고정 길이 레코드의 비연속 필드에 데이터를 삽입할 수 있습니다.
machinefmt
— 바이트를 쓰는 순서
'n'
(디폴트 값) | 'b'
| 'l'
| 's'
| 'a'
파일 내에 바이트를 쓰는 순서로, 다음 표의 문자형 벡터 또는 string형 스칼라 중 하나로 지정됩니다. bit
및 n
ubit
정밀도의 경우, n
machinefmt
는 바이트 내 비트를 쓰는 순서를 지정하지만 바이트를 쓰는 순서는 시스템 바이트 순서에 따릅니다.
| 시스템 바이트 순서(디폴트 값) |
| 빅 엔디안 순서 |
| 리틀 엔디안 순서 |
| 빅 엔디안 순서, 64비트 long 데이터형 |
| 리틀 엔디안 순서, 64비트 long 데이터형 |
기본적으로, 현재 지원되는 플랫폼은 모두 새 파일에 리틀 엔디안 순서를 사용합니다. 기존의 이진 파일은 빅 엔디안 또는 리틀 엔디안 순서를 사용할 수 있습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
정밀도 인수는 상수여야 합니다.
정밀도 유형
'long'
,'ulong'
,'unsigned long'
,'bit
,n
''ubit
을 지원하지 않습니다.n
'컴퓨터 형식(바이트를 쓰는 순서) 입력 인수를 지원하지 않습니다.
정밀도가
int
같은 C 유형인 경우 해당 유형의 대상 크기와 프로덕션 크기는 다음과 같아야 합니다.일치해야 합니다.
MATLAB 정수형에 직접 매핑되어야 합니다.
char
유형을 부호 있는 8비트 정수로 처리해야 합니다. 0~127까지의 값만 사용하십시오.파일을 추가하고 건너뛰기 인수를 사용하는 경우 C 런타임
fseek
가 파일 끝을 지나서 탐색하고 쓰지 않은 바이트를 0으로 초기화할 수 있어야 합니다. 이 동작은 POSIX® 및 Windows®의 동작과 일치합니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2022b: 스레드 기반 환경에서 함수 사용
이 함수는 스레드 기반 환경을 지원합니다.
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)