MATLAB 数据导出
MATLAB数据输出意味着将数据写入文件,可以将数据在读取ASCII文件的其他应用程序中使用。MATLAB提供了几种数据导出选项:
- 将数组导出为分隔符分隔的ASCII数据文件。
- 记录键盘输入和生成的文本输出的日记(或日志)文件。
- 使用低级函数(如fprintf)创建专用的ASCII文件。
- 创建MEX文件以访问编写特定文本文件格式的C / C ++或Fortran例程。
- 此外,还可以将数据导出到电子表格中。
将数字数组导出为分隔符分隔的ASCII数据文件有两种方法:
- 使用
save
函数并指定-ascii限定符 - 使用
dlmwrite
函数
使用 save
函数的语法是:
save my_data.out num_array -ascii
其中 my_data.out 是创建的分隔符分隔的ASCII数据文件,num_array
是数字数组,-ascii 是限定符。
使用 dlmwrite
函数的语法是:
dlmwrite('my_data.out', num_array, 'dlm_char')
其中,my_data.out是创建的分隔符分隔的ASCII数据文件,num_array是数字数组,dlm_char是分隔符字符。
例如,以下示例演示了概念。创建一个脚本文件并输入以下代码:
num_array = [1 2 3 4; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out
运行文件后,将显示以下结果:
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00
4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00
7.0000000e+00 8.0000000e+00 9.0000000e+00 0.0000000e+00
1 2 3 4
4 5 6 7
7 8 9 0
请注意
,save -ascii
命令和dlmwrite
函数不适用于输入为单元数组的情况。要从单元数组的内容创建分隔符分隔的ASCII文件,可以:
- 使用cell2mat函数将单元数组转换为矩阵
- 使用底层文件I/O函数导出单元数组
如果使用 save
函数将字符数组写入ASCII文件,则将字符的ASCII等效形式写入文件。
例如,让我们将单词'hello'写入文件:
h = 'hello';
save textdata.out h -ascii
type textdata.out
MATLAB 执行上述语句并显示以下结果。 这是 8 位 ASCII 格式的字符串 'hello' 的字符。
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
写入 Diary 文件
Diary 文件是MATLAB会话的活动日志。diary
函数创建您的会话的精确副本并保存在磁盘文件中,但不包括图形。
要打开 diary
函数,请输入
diary
我们可以选择给出日志文件的名称,例如 -
diary logdata.out
要关闭 diary
功能,请输入 -
diary off
我们可以在文本编辑器中打开 Diary 文件。
使用底层 I / O将数据导出到文本数据文件
到目前为止,我们已经导出了数值数组。但是,我们可能需要创建其他文本文件,包括数字和字符数据的组合,非矩形输出文件或具有非ASCII编码方案的文件。为此,MATLAB提供了底层 fprintf
函数。
与底层的 I/O 文件操作相似,在导出文件之前,我们需要使用 fopen
函数打开或创建一个文件,并获得文件标识符。默认情况下,fopen 打开一个文件以进行只读访问。您应该指定写或追加的权限,例如“w”或“a”。
在处理完文件后,我们需要使用 fclose(fid)
函数关闭它。
以下示例演示了这个概念
示例
创建一个脚本文件并输入以下代码 -
% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
% open a file for writing
fid = fopen('logtable.txt', 'w');
% Table Header
fprintf(fid, 'Log Function\n\n');
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f %f\n', y);
fclose(fid);
% display the file created
type logtable.txt
运行此脚本后,将显示以下结果。
Log Function
0.000000 -Inf
10.000000 2.302585
20.000000 2.995732
30.000000 3.401197
40.000000 3.688879
50.000000 3.912023
60.000000 4.094345
70.000000 4.248495
80.000000 4.382027
90.000000 4.499810