返回介绍

Data Output

发布于 2021-06-01 15:10:52 字数 3240 浏览 975 评论 0 收藏 0

MATLAB中的数据导出(或输出)意味着写入文件。 MATLAB允许您在另一个读取ASCII文件的应用程序中使用您的数据。 为此,MATLAB提供了几种数据导出选项。

您可以创建以下类型的文件 -

  • 来自数组的矩形,分隔的ASCII数据文件。

  • 击键日记(或日志)文件以及生成的文本输出。

  • 使用fprintf等低级函数的专用ASCII文件。

  • MEX文件,用于访问写入特定文本文件格式的C/C ++或Fortran例程。

除此之外,您还可以将数据导出到电子表格。

有两种方法可以将数值数组导出为分隔的ASCII数据文件 -

  • 使用save函数并指定-ascii限定符

  • 使用dlmwrite函数

使用保存功能的语法是 -

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是分隔符。

例子 (Example)

以下示例演示了该概念。 创建一个脚本文件并键入以下代码 -

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

写日记文件

日记文件是MATLAB会话的活动日志。 日记功能在磁盘文件中创建会话的精确副本,不包括图形。

要打开日记功能,请键入 -

diary

或者,您可以提供日志文件的名称,例如 -

diary logdata.out

要关闭日记功能 -

diary off

您可以在文本编辑器中打开日记文件。

使用低级I/O将数据导出到文本数据文件

到目前为止,我们已经导出了数字数组。 但是,您可能需要创建其他文本文件,包括数字和字符数据的组合,非矩形输出文件或具有非ASCII编码方案的文件。 出于这些目的,MATLAB提供了低级fprintf函数。

与低级I/O文件活动一样,在导出之前,您需要使用fopen函数打开或创建文件并获取文件标识符。 默认情况下,fopen打开一个文件以进行只读访问。 您应该指定写入或附加的权限,例如“w”或“a”。

处理完文件后,需要使用fclose(fid)函数关闭它。

以下示例演示了该概念 -

例子 (Example)

创建一个脚本文件并在其中键入以下代码 -

% 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
100.000000    4.605170

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文