台湾国立大学郭彦甫Matlab教程笔记(8)
file access
supported file formats:
1.matlab formatted data .import function:load; export function save
2.text
3.spreadsheet excel .import function xlsread; export function xlswrite
1.save (all) workspace data to a file
code:
clear; a=magic(4);
save mydata1.mat
save mydata2.mat -ascii
执行前两行代码
会出现这个保存的文档
然后我们打开这个文件,发现里面是乱码。主要是matlab把里面内容压缩,所以我们看不到原来的东西。
如果想看到原来存储的内容,就要执行第三行代码 后面带有 -ascii,这样可阅读
save mydata2.mat -ascii
load('mydata1.mat')
load('mydata2.mat','-ascii')
我们先清屏,使用clear;clc
然后执行上面两行代码,就会载入进来文件
小练习:如何存储一个特定的变量,而不是整个工作区?
比如,存储变量A到一个文件名为varibleA的mat文件中
save('varibleA','A');
如果为了可视化,
save('varibleA','A','-ascii');
效果:
存储成txt文档:
save('varibleA.txt','A','-ascii');
read from excel spreadsheet
code:
Score= xlsread('04Score.xlsx')
这句话会把excel中的字符和数字分开,也就是这样读取进来的是数字
运行结果:
Score1=xlsread('04Score.xlsx','B2:D4')
同样得到这组数据
补充一点: matlab如何读取excel表格中第二个sheet中的数据?或者第三个sheet中的数据? 今天遇到这个问题,现在回头补充上。
还是使用xlsread()函数,用法同上,区别是需要指定哪一个sheet,用数字表示,第二个sheet,写2,第三个sheet写3,以此类推。位置是在文件名后面。
举例子:
代码:
下面代码是获取这个excel文件中第三个sheet中的数据,所以数字指定为3。
代码的解释:三个参数“”第一个参数是文件名,第二个参数是数字,指定位于哪个sheet,第三个参数是读取的数据所在位置(位于sheet中),然后得到的数据存放在pingtai这个变量中。
%平台位置
pingtai=xlsread("cumcm2011B附件2_全市六区交通网路和平台设置的数据表.xls",3,'B2:B81');
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得到的是一行,再次转置回来变成一列
大家发现没有mean的标题,第三行代码就是给标题xlswrite( ‘04Score.xlsx’,{‘Mean’},1,‘E1’);
结果:
自己的练习:计算标准差,之后写进第F列
我的思考过程
1.求矩阵的标准差,函数是std()
最后这个变量Var需要转置,因为excel中的人名是纵向排列的,为了把标准差与之对应,需要再次转置
2.写入excel文件
代码:
xlswrite('04Score.xlsx',Var,1,'F2:F4');
xlswrite('04Score.xlsx',{'Var'},1,'F1');
解释:第一个变量:文件名;第二个变量:所要写入的变量;第三个变量:excel中的哪个sheet;第四个变量:写入excel中的位置
运行结果:
1.getting both the text and numbers
指定两个varible 一个存放成绩数字,一个存放表头
[score header]=xlsread(‘04Score.xlsx’)
作业:
现在有了score 和 header 这两个变量,我们如何把数字和文字同时用xlswrite写进去?
完成代码。
首先我们已经有了score 和header这两个变量
然后就是需要把这两个变量写入到excel中。
代码:
xlswrite('lsz.xlsx',header,1,'A1')
xlswrite('lsz.xlsx',score,1,'B2:F4')
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需要有指针
一些指令:
步骤
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