Matlab的数据导入和导出2
matlab的数据导出
MATLAB有多种数据输出函数可以选择,可以将数据导出到 Excel文件,特定分隔符的 ASCII 数据文件等等,
导出数字阵列作为分隔符的 ASCII 数据文件的方法有两种:
使用 save 函数及指定的 ASCII 限定符
使用 dlmwrite 函数
dlmwrite 函数的语法如下:
dlmwrite(‘my_data.out’, num_array, ‘dlm_char’)
导出成xls文件
前文介绍了xlsread函数,用于读取execl文件,对应的,matlab中写excel为xlswrite函数,同样的,xlswrite函数也有多种参数格式:
xlswrite(filename,A):
将矩阵 A 中的数据写入 filename 指定的电子表格文件中的第一张工作表,从单元格 A1 开始写入。
xlswrite(filename,A,sheet)
将矩阵 A 中的数据写入 filename 指定的电子表格文件中sheet指定的工作表。如果 sheet 不存在,xlswrite 将在工作表集合末尾添加一张新的工作表。
xlswrite(filename,A,xlRange)
xlswrite(filename,A,sheet,xlRange)
将矩阵 A 中的数据写入 filename 指定的excel文件中指定的区域内。参数定义和xlsread类似,在此不在赘述,下面给出一个例子:
status = xlswrite(filename,data,1,'A1');
将矩阵data的数据,写入filename文件的第1个sheet的A1中。
导出为ASCII分隔的文件
matlab中,导出ascii分割文件使用了dlmwrite,根据参数的不同,也有几种形式:
1. dlmwrite(filename, M)
将矩阵M写入ASCII格式的文件filname中,分隔符为默认的 ('),数据是从第一行的第一列开始写的。
2. dlmwrite(filename, M, 'D')
将矩阵M写入ASCII格式的文件filname中,分隔符为D,数据是从第一行的第一列开始写的。使用\t来产生制表符分割的文件。
3. dlmwrite(filename, M, 'D', R, C)
将矩阵M写入ASCII格式的文件filname中,分隔符为D,数据是从第R行的第C列开始写。
4. dlmwrite(filename, M, 'attrib1', value1, 'attrib2', value2, ...)
使用属性和属性值对来定义导出特性。每个属性后面必须跟一个相应的值。
属性值包括:
delimiter 分隔符
newline 行终止符,共两种,'pc' 'pc'终结 或 'unix' 'unix' 终结,对应不同的os。
roffset 矩阵数据开始写的行,0开始
coffset 矩阵数据开始写的列,0开始
precision 数值精度。指定有效位数,如'%10.5f'的数。
-
dlmwrite(filename, M, '-append')
将矩阵数据追加到文件的末尾,前面的1到4,没有指定’‘-append’,所以,dlmwrite会覆盖文件中的任何现有数据。
- dlmwrite(filename, M, ‘-append’, attribute-value list)
相当于4和5参数类型的结合体,使用属性值对列表,同时采用添加的方式对filename进行写入。
导出自定义文件
和读文件对应,matlab也只是通过fopen和printf的方式进行文件读写,也支持sprintf函数格式化输出变量
打印格式和c语言的使用基本一致,主要有:
%d 整数
%u 无符号十进制整数
%i 有符号十进制数
%e 实数:科学计算法形式
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
%g 由系统自动选取上述两种格式之一
%s 输出字符串
%o 无符号八进制整数
%p 指针
%x 使用十六进制数字0f的无符号十六进制整数
下面看一个例子:
% 建立一个2x10矩阵
x = 0:10:100;
y = [x; 2*x];
fid = fopen(‘test.txt’, ‘w’);
fprintf(fid, ‘%d %d \n’, y);
fclose(fid);
运行该文件,显示以下结果: