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所示。

图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);
图1.2 仿真结果

 

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
图2.1 仿真结果

小提示:如果该文件处于打开状态,那么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]}
图2.2 数据选择对话框

(3)查看excel文件:xlsfinfo()函数

常用语句为:[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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值