台湾国立大学郭彦甫Matlab教程笔记(8)文件读写

台湾国立大学郭彦甫Matlab教程笔记(8)

file access

台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第1张图片
supported file formats:
1.matlab formatted data .import function:load; export function save
2.text
3.spreadsheet excel .import function xlsread; export function xlswrite

save() and load()

1.save (all) workspace data to a file
code:

 clear; a=magic(4);
save mydata1.mat
save mydata2.mat -ascii

执行前两行代码
会出现这个保存的文档

台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第2张图片
然后我们打开这个文件,发现里面是乱码。主要是matlab把里面内容压缩,所以我们看不到原来的东西。
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第3张图片
如果想看到原来存储的内容,就要执行第三行代码 后面带有 -ascii,这样可阅读
save mydata2.mat -ascii

台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第4张图片
2.load data stored in a file:

load('mydata1.mat')
load('mydata2.mat','-ascii')

我们先清屏,使用clear;clc
然后执行上面两行代码,就会载入进来文件
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第5张图片

小练习:如何存储一个特定的变量,而不是整个工作区?
比如,存储变量A到一个文件名为varibleA的mat文件中

save('varibleA','A');

如果为了可视化,

save('varibleA','A','-ascii');

效果:
在这里插入图片描述

存储成txt文档:

save('varibleA.txt','A','-ascii');

效果:
在这里插入图片描述

excel file reading :xlsread()

这里有一个excel文件
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第6张图片

read from excel spreadsheet
code:

Score= xlsread('04Score.xlsx')

这句话会把excel中的字符和数字分开,也就是这样读取进来的是数字
运行结果:
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第7张图片

Score1=xlsread('04Score.xlsx','B2:D4')

同样得到这组数据

台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第8张图片

补充一点: matlab如何读取excel表格中第二个sheet中的数据?或者第三个sheet中的数据? 今天遇到这个问题,现在回头补充上。
还是使用xlsread()函数,用法同上,区别是需要指定哪一个sheet,用数字表示,第二个sheet,写2,第三个sheet写3,以此类推。位置是在文件名后面。
举例子:

代码:
下面代码是获取这个excel文件中第三个sheet中的数据,所以数字指定为3。
代码的解释:三个参数“”第一个参数是文件名,第二个参数是数字,指定位于哪个sheet,第三个参数是读取的数据所在位置(位于sheet中),然后得到的数据存放在pingtai这个变量中。

%平台位置
pingtai=xlsread("cumcm2011B附件2_全市六区交通网路和平台设置的数据表.xls",3,'B2:B81');

excel file writing :xlswrite()

1.calculate the means平均值 and write into excel spreadsheet

code

M=mean(Score')';
xlswrite('04Score.xlsx',M,1,'E2:E4');
xlswrite( '04Score.xlsx',{'Mean'},1,'E1');

解释:这里mean计算的平均数是每一列的,但是Score中每一位学生都是横着排列的,是一行。需要转置一下。mean得到的是一行,再次转置回来变成一列
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第9张图片

运行前两行得到结果:
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第10张图片

大家发现没有mean的标题,第三行代码就是给标题xlswrite( ‘04Score.xlsx’,{‘Mean’},1,‘E1’);
结果:
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第11张图片

自己的练习:计算标准差,之后写进第F列
在这里插入图片描述
我的思考过程
1.求矩阵的标准差,函数是std()
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第12张图片
最后这个变量Var需要转置,因为excel中的人名是纵向排列的,为了把标准差与之对应,需要再次转置
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第13张图片
2.写入excel文件
代码:

xlswrite('04Score.xlsx',Var,1,'F2:F4');
xlswrite('04Score.xlsx',{'Var'},1,'F1');

解释:第一个变量:文件名;第二个变量:所要写入的变量;第三个变量:excel中的哪个sheet;第四个变量:写入excel中的位置
运行结果:

台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第14张图片

getting text in excel spreadsheet

1.getting both the text and numbers
指定两个varible 一个存放成绩数字,一个存放表头
[score header]=xlsread(‘04Score.xlsx’)
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第15张图片
作业:
现在有了score 和 header 这两个变量,我们如何把数字和文字同时用xlswrite写进去?
完成代码。
首先我们已经有了score 和header这两个变量
然后就是需要把这两个变量写入到excel中。
代码:

xlswrite('lsz.xlsx',header,1,'A1')
xlswrite('lsz.xlsx',score,1,'B2:F4')

写入后的文件,文件名lsz.xlsx
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第16张图片

low-level file input/output 低阶的文件写入和输出

1.read and write file at the byte or character level
2.a file has an ID fid 档案要有 iD
3.location in the file is specified by a pointer that can be moved around需要有指针
一些指令:

台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第17张图片台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第18张图片台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第19张图片
步骤
1 generate x and y
2.open a file
3.write x and y into the file
4.close the file

范例程式:

x=0:pi/10:pi;
y=sin(x);
fid = fopen('sin.txt','w');
for i=1:11
    fprintf(fid,'%5.3f %8.4f\n',x(i),y(i));
end
fclose(fid);
type sin.txt

台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第20张图片
台湾国立大学郭彦甫Matlab教程笔记(8)文件读写_第21张图片

你可能感兴趣的:(matlab)