常用语句为: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位精度。
常用语句(1)为:fid = fopen(filename)
常用语句(2)为:fid = fopen(filename,'permission')
其中:fid表示文件句柄;filename表示文件名称;permisson表示打开方式的参数,默认的打开方式是只读模式。
permission可选项如下表所示:
可选项 | 含义 | 可选项 | 含义 |
---|---|---|---|
'r' | 只读 | 'w+' | 重新刷新写入(文件若不存在,自动创建) |
'w' | 写入(文件若不存在,自动创建) | 'a+' | 文件后增写(文件若不存在,自动创建) |
'a' | 文件后增写(文件若不存在,自动创建) | 'A' | 文件后增写,而不会自动刷新当前输出缓冲区 |
'r+' | 读出和写入(已有文件) | 'W' | 写入,而不会自动刷新当前输出缓冲区 |
常用语句(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);
常用语句为: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无法完成写入命令,因此需要提前关闭该文件。
常用语句(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有关文件格式的说明。
常用语句(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中
常用语句(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