在MATLAB中读取二进制文件主要有以下三种方法,具体选择取决于数据格式和需求:
一、使用 `fread` 函数(推荐)
这是最常用的方法,适用于已知数据格式的场景。通过指定数据类型和大小,可以高效读取二进制文件。
语法:
```matlab
data = fread(fileID, size, precision, skip, machineformat)
```
fileID:通过 `fopen` 打开的文件句柄(如 `fileID = fopen('data.bin', 'rb')`)
size:要读取的元素数量(标量或向量)
precision:数据类型(如 `'int16'`、`'double'`)
skip:跳过的字节数(如 `fseek(fileID, 2048, 'bof')`)
machineformat:机器字长(如 `'int32'`)
示例:
```matlab
fileID = fopen('data.bin', 'rb');
fseek(fileID, 2048, 'bof');
raw_array = fread(fileID, 512, 'int16');
fclose(fileID);
```
二、使用 `fopen`、`fread`、`fclose` 手动操作(底层方法)
适用于需要精细控制文件读取的场景,如处理非标准格式或与C语言接口。
步骤:
1. 打开文件:`fileID = fopen('data.bin', 'rb')`
2. 跳过头部:`fseek(fileID, 2048, 'bof')`
3. 读取数据:`raw_array = fread(fileID, 512, 'int16')`
4. 关闭文件:`fclose(fileID)`
三、使用导入模板或函数(便捷方法)
适用于数据格式固定的场景,如从实验设备导出数据。
方法:
导入模板 :通过 `File → import Data` 选择二进制文件,自动匹配数据类型
导入函数:
根据数据格式选择专用函数(如 `readmatrix`、`readcell` 等)
注意事项
读取前需确认文件格式与数据类型匹配,避免错误
大文件建议分块读取以节省内存
二进制文件默认以文本模式打开,需显式指定 `'rb'` 模式