在MATLAB中,格式化数据的读写是高级编程技术中的重要环节,它允许用户精确控制数据在文件中的存储和读取。本节主要关注两个关键函数:fprintf和fscanf。
1. fprintf函数
fprintf函数用于向文件中写入格式化的数据。它的基本语法是:
`count = fprintf(fid, format, A ...)`
其中,`fid`是文件标识符,`format`是一个字符串,定义了数据的输出格式,可以包含数字、字符和控制字符。`A`是要写入文件的变量或数组,例如,例8-1展示了如何使用fprintf将计算得到的`x`和`y`数据以特定格式(如6位小数和12位浮点数)写入名为'my.txt'的文件:
```matlab
x = 0:0.1:1;
y = [x; exp(x)]; % 两行数据
fid = fopen('my.txt', 'w'); % 打开文件为写模式
fprintf(fid, '%6.2f%12.8f\n', y); % 格式化写入
fclose(fid); % 关闭文件
```
2. fscanf函数
与fprintf相反,fscanf用于从文件中读取格式化的数据。其基本形式为:
`[A, count] = fscanf(fid, format, size)`
这里,`fid`是文件标识符,`format`定义了预期的数据格式,`size`是可选参数,指定每个输入项的预设大小。fscanf会根据`format`从文件中读取相应数量的数据到数组`A`中。例8-2展示了如何从之前写入的'my.txt'文件中读取数据并将其输出到屏幕上:
```matlab
fid = fopen('my.txt', 'r'); % 打开文件为读模式
[a, count] = fscanf(fid, '%6.2f%12.8f\n', []); % 使用空数组来读取所有数据
disp(a); % 输出读取的数据
fclose(fid); % 关闭文件
```
这两个函数在处理文本文件时非常有用,因为它们能够确保数据以预设的格式保存和恢复,这对于数值计算和数据分析任务中的数据持久化至关重要。同时,了解文件的打开与关闭(使用fopen和fclose)、文件定位和状态检查(如feof、fseek、ftell等)也是进行高效文件操作的基础。掌握这些技巧对于编写复杂的MATLAB应用程序,特别是那些涉及数据输入输出的应用,是不可或缺的。