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

查看笔记

扫码一下
查看教程更方便