fwrite
将数据写入二进制文件
语法
说明
count = fwrite(___)
返回 A
中 fwrite
已成功写入到文件的元素数。您可将此语法与上述语法中的任何输入参量一起使用。
示例
将 uint8 数据写入二进制文件
打开名称为 nine.bin
的文件以便写入。在对 fopen
的调用中使用 'w'
指定写访问权限。
fileID = fopen('nine.bin','w');
fopen
返回文件标识符 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');
将一个由零组成的 4×4 矩阵追加到文件中。然后关闭文件。
fwrite(fileID,zeros(4),'double');
fclose(fileID);
按 Big-Endian 字节排序写入二进制文件
将随机的双精度数值写入名称为 myfile.bin
的文件,以便在 big-endian 系统上使用。在 fwrite
调用中指定 'ieee-be'
的 machinefmt
值,以便指示 big-endian 字节排序。
fileID = fopen('myfile.bin','w'); fwrite(fileID,rand(4),'double','ieee-be'); fclose(fileID);
输入参数
fileID
— 文件标识符
整数 | 1 | 2
文件标识符,指定为从 fopen
获取的整数,1
表示标准输出(屏幕),2
表示标准错误。
A
— 要写入的数据
数值数组 | 字符数组 | 字符串数组
要写入的数据,指定为数值数组、字符数组或字符串数组。
虽然 fwrite
支持写入字符或字符串数据,但这样做会导致意外行为,因此不推荐这样做。
如果您使用 fwrite
写入字符或字符串数据,请在调用 fopen
打开文件进行读取或写入时指定文本编码,并将精度指定为 char
。
示例: [1,2,3;4,5,6]
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
复数支持: 是
precision
— 要写入的值的类和大小
'uint8'
(默认) | 字符向量 | 字符串标量
要写入的值的类和大小(以位为单位),指定为“精度”列中列出的字符向量或字符串标量之一。
值类型 | 精度 | 位(字节) |
---|---|---|
无符号整数 |
|
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
有符号整数 |
|
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
浮点数 |
|
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
字符 |
|
|
| MATLAB® |
如果指定 bit
或 n
ubit
的精度,则 n
fwrite
会使范围之外的所有值饱和。
注意
要在 MATLAB 中保留 NaN
和 Inf
值,请读取和写入 double
或 single
类的数据。
skip
— 要跳过的字节数
0 (默认) | 标量
写入每个值之前要跳过的字节数,指定为标量。如果将 precision
指定为 bit
或 n
ubit
,请以位为单位指定 n
skip
。
使用 skip
参量将数据插入到固定长度记录的非连续字段中。
machinefmt
— 字节写入顺序
'n'
(默认) | 'b'
| 'l'
| 's'
| 'a'
在文件中写入字节的顺序,指定为下表中的字符向量或字符串标量之一。对于 bit
和 n
ubit
精度,n
machinefmt
会指定字节中位的写入顺序,而字节的写入顺序仍与系统字节顺序相同。
| 系统字节排序方式(默认) |
| Big-endian 排序 |
| Little-endian 排序 |
| Big-endian 排序,64 位长数据类型 |
| Little-endian 排序,64 位长数据类型 |
默认情况下,当前支持的所有平台都使用 little-endian 排序方式对新文件进行排序。现有二进制文件可以使用 big-endian 或 little-endian 排序方式。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
精度参量必须为常量。
不支持精度类型
'long'
、'ulong'
、'unsigned long'
、'bit
和n
''ubit
。n
'不支持机器格式(字节写入顺序)输入参量。
如果精度为 C 类型,例如
int
,该类型的目标和生产大小必须:匹配。
直接映射到 MATLAB 整数类型。
将
char
类型视为有符号 8 位整数。只能使用从 0 到 127 之间的值。追加到文件中并使用 skip 参量时,C 运行时
fseek
必须能够跳过文件末尾进行查找并将未写入的字节初始化为 0。此行为与 POSIX® 和 Windows® 的行为相匹配。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2006a 之前推出R2022b: 在基于线程的环境中使用函数
此函数支持基于线程的环境。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 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)