MATLAB | 您所在的位置:网站首页 › matlab读取ascii文件 › MATLAB |
1.读写*.txt格式文件
(1)写入文本:save()函数
常用语句为:save(filename,Data,'-ascii') 其中:filename表示文件名称;Data表示待写入的变量;'-ascii'表示保存文件的格式为ASCII文件,不添加此项容易导致文本乱码。 clc;clear all; A = magic(3); B = ones(10); save('ydata1.txt','A','-ascii'); % 存储数据到ydata1.txt中 save('ydata1.txt','B','-append','-ascii'); % 将变量B添加到ydata1.txt中利用该函数写入文本的数字是由科学计数法表示的,并且自动保存为8位精度。 (2)打开文本:fopen()函数常用语句(1)为:fid = fopen(filename) 常用语句(2)为:fid = fopen(filename,'permission') 其中:fid表示文件句柄;filename表示文件名称;permisson表示打开方式的参数,默认的打开方式是只读模式。 permission可选项如下表所示: 可选项含义可选项含义'r'只读'w+'重新刷新写入(文件若不存在,自动创建)'w'写入(文件若不存在,自动创建)'a+'文件后增写(文件若不存在,自动创建)'a'文件后增写(文件若不存在,自动创建)'A'文件后增写,而不会自动刷新当前输出缓冲区'r+'读出和写入(已有文件)'W'写入,而不会自动刷新当前输出缓冲区 (3)写入文本:fprintf()函数常用语句(1)为:fprintf(fid, formatSpec, A1, ..., An) 常用语句(2)为:fprintf(formatSpec, A1, ..., An) 其中:fid表示文件句柄;formatSpec表示数据输出时采用的格式;A1至An表示待写入的数据。 formatSpec对应的格式化操作符以百分号%开头,以转换字符结尾(不可省略),中间可以加入指定标识符、标志、字段宽度、精度和子类型操作符,如图1.1所示。 ![]() 常用的转换字符包括: 转换字符含义转换字符含义%d整数%e浮点数,科学计数法形式%f浮点数,小数形式%g更紧凑的%e和%f,末尾不带0%c单个字符%s字符串 标识符处理函数输入参数的顺序。使用n$,其中 n 代表函数调用中其他输入参数的位置。 例:('%3$s %1$s %2$s %3$s', 'A', 'B', 'C') 表示将字符串'A', 'B', 'C' 按照 C A B C的顺序输出。 注意:如果输入参数为数组,则不能使用标识符指定该输入参数中的特定数组元素。 常用标志 标志含义'-'左对齐 例:%-4.3f '+'(1)添加符号 "+" 或 "-" ;(2)右对齐文本 例:%+4.3f , %+5s ' '在值之前插入空格 例:% 4.3f '0'在值之前补充0使之满足字段宽度 例:% 4.3f 字段宽度 要输出的最少字符数,除非标志另行指定,否则默认使用空格填充值之前的字段宽度。 精度 类别含义对于%f、%e和%E小数点右侧的位数 例:%.4f 可表示为将π输出为"3.1416" 对于%g、%G有效位数 例:%.4g 可表示为将π输出为"3.142" 子类型使用子类型操作符将浮点值显示为八进制、十进制或十六进制值。 在格式化操作符的 % 前或者转化字符后可以添加其他文本,一些特殊字符表示如下表所示: 特殊字符表征形式特殊字符表征形式单引号''百分号%%反斜杠\\警报\a退格符\b换页符\f换行符\n回车符\r水平制表符\t垂直制表符\v clc;clear all; A1 = [10.3 3.1415 2.89]; A2 = [3.14159 2.89]; A3 = [34.2]; A4 = 'study'; fid = fopen('moon.txt','w'); % 打开文件并写入 fprintf(fid,'%d %d %d\n',round(A1)); % 保存整数,\n表示新起一行的控制符 fprintf(fid,'%4.3f %.4f\n',A2); % %4.3f表示字段宽度为4位数,包括小数点后的3位数 % %.4f表示保留4位小数 fclose(fid); % 关闭文件 fid = fopen('moon.txt','a'); % 打开文件并在文档末尾增写 fprintf(fid,'%.3e\n',A3); % %.3e表示保留3位小数,并以科学计数法形式保存 fprintf(fid,'%s\n',A4); % 保存字符串 fclose(fid);![]() 2.读写*.xlsx格式文件 (1)写入excel文件:xlswrite()函数 常用语句为:xlswrite(filename,Data,sheet,Range) 其中:filename表示文件名称;Data表示待写入的数据、文本;sheet表示写入excel中的工作表标签,该参数缺省时,默认为Sheet1;Range表示工作表中的指定区域,该参数缺省时,默认为A1。 clc;clear all; filename = 'study.xlsx'; Data1 = [1,2,3;6,5,4;7,8,9]; % 都是数字的矩阵 Data2 = {1,2,3;'a','b','c';7,'d',9}; % 包括数字和文本的元胞数组 headers = {'AAA','BBB','CCC'}; % 都是文本的元胞数组 xlswrite(filename,Data1,1,'A1'); % 将矩阵Data1存储到study.xlsx中的第一个工作表(默认为Sheet1)A1位置,如果不存在study.xlsx文件,则创建该文件 xlswrite(filename,Data2,2,'A2'); % 将元胞数组Data2存储到study.xlsx中的第二个工作表 xlswrite(filename,[headers;Data2],'demo','A1:C4'); % 将数据存储到study.xlsx中的名为demo的工作表A1:C4位置;如果是A1:B4区域,则舍弃原数据的第三列 for i = 1:3 xlswrite(filename,Data1(i,:),1,['D',num2str(2*i-1)]); % 有规律的写入工作表中 end![]() 小提示:如果该文件处于打开状态,那么MTALAB无法完成写入命令,因此需要提前关闭该文件。 (2)读取excel文件:xlsread()函数常用语句(1)为:num = xlsread(filename, sheet, Range); 常用语句(2)为:[num, txt, raw] = xlsread(filename, sheet, Range); 其中:num表示输出的数组;txt表示输出的文本;raw表示输出的元胞数组;filename表示文件名称;sheet表示读取excel中的工作表标签;Range表示工作表中的指定区域,该参数缺省时,默认为当前工作表中的全部数据。 clc;clear all; filename = 'study.xlsx'; num1 = xlsread(filename,1,'A1:C3'); % 读取study.xlsx中的第一个工作表A1:C3区域 num2 = xlsread(filename,1,'A:A'); % 读取study.xlsx中的第一个工作表第A列数据 num3 = xlsread(filename,2); % 读取study.xlsx中的第二个工作表,默认为全部数据,由于其中存在文本,因此表示为'NaN' [num4,txt,raw] = xlsread(filename,'demo'); % 读取study.xlsx中的全部数据,包括文本 num5 = xlsread(filename,-1); % MATLAB自动打开study.xlsx,由用户自己选择所需数据仿真结果: >> num1 = 1 2 3 6 5 4 7 8 9 >> num2 = 1 6 7 >> num3 = 1 2 3 NaN NaN NaN 7 NaN 9 >> num4 = 1 2 3 NaN NaN NaN 7 NaN 9 >> txt = 4×3 cell 数组 {'AAA'} {'BBB'} {'CCC'} {0×0 char} {0×0 char} {0×0 char} {'a'} {'b'} {'c'} {0×0 char} {'d'} {0×0 char} >> raw = 4×3 cell 数组 {'AAA'} {'BBB'} {'CCC'} {[1]} {[2]} {[3]} {'a'} {'b'} {'c'} {[7]} {'d'} {[9]}![]() 常用语句为:[Type, SheetName, Format] = xlsfinfo(filename) 其中:Type 是用于确认filename是否为xlsread函数可读的文件,为字符向量;SheetName为1行n列的元胞数组,每个元胞数组为工作表的名称;Format为字符向量,返回Excel有关文件格式的说明。 3.读写*.mat格式文件 (1)写入*.mat格式文件:save()函数 常用语句(1)为:save(filename,Data) 常用语句(2)为:save(filename,Data,'-append') 其中:filename表示文件名称;Data表示待写入的变量;'-append'表示将变量Data添加到*.mat文件中。 clc;clear all; A = magic(3); B = ones(10); save('ydata1.mat','A','B'); % 函数格式存储数据 save ydata2.mat A B % 命令格式存储数据,没有括号、单引号 C = zeros(6); save('ydata1.mat','C','-append'); % 将变量C添加到ydata1.mat中 (2)读取*.mat格式文件:load()函数常用语句(1)为:load(filename) 常用语句(2)为:load(filename,Data) 语句(2)表示读取名为filename的*.mat文件中的Data变量。 clc;clear all; load('ydata1.mat'); % 函数格式读取*.mat文件 load ydata1.mat % 命令格式读取*.mat文件,没有括号、单引号 load('ydata1.mat','C'); % 读取ydata1.mat中的变量C load ydata1.mat C % 命令格式读取ydata1.mat中的变量C |
CopyRight 2018-2019 实验室设备网 版权所有 |