[2019/5/23]学习MATLAB第三节,数据的写入和读取

1.数据的保存与导出

clear; 
a = magic(4);
save mydata1.mat	%将workspace中的所有变量保存在mydat1.mat文件中
save mydata2.mat -ascii	%将workspace中的所有变量保存在mydat1.mat文件中(文件可用Notepad++打开查看)
load('mydata1.mat')	%导出变量,但不改变变量名
load('mydata2.mat','-ascii')	%导出变量,但更改变量名为mydata2

若需要保存单独的某一变量;如:save mydata1.mat A,表示保存变量A

2.Excel文件的读取和编写

>> Score = xlsread('rand_score.xlsx')

Score =

    80    90   100    90
    70    80    90    80
    60    70    80    70

>> Score = xlsread('rand_score.xlsx','B2:D4')

Score =

    80    90   100
    70    80    90
    60    70    80

向Excel文件写入数据

>> M = mean(Score')';	%mean(),输出矩阵每一列的平均值,这里是求每一行的平均值,故先转置后再转置
>> xlswrite('04Score.xlsx', M, 1, 'E2:E4');	%将数据M写入文件中的E2、E3、E4位置,1表示文件的第一页(sheet)
>> xlswrite('04Score.xlsx', {'Mean'}, 1, 'E1');	%在'E1'位置写入字符串Mean
>> [Score Header] = xlsread('rand_score.xlsx')

Score =						%输出数字部分,文件类型是double

    80    90   100    90
    70    80    90    80
    60    70    80    70
    
Header = 					%输出字符部分,以cell的型式存储(因为字符串长度不一)

    ''         'Test1'    'Test2'    'Test3'    'Mean'
    'Tom'      ''         ''         ''         ''    
    'Joun'     ''         ''         ''         ''    
    'Peter'    ''         ''         ''         ''  

问题:怎么将Score和Header中的数据写入到指定的文件中?

>>score = num2cell(Score)		%将Score中的数值转化成元胞数组
score = 

    [80]    [90]    [100]    [90]
    [70]    [80]    [ 90]    [80]
    [60]    [70]    [ 80]    [70]
    
>> Header(2:4,2:5) = score(1:3,1:4)		%将元胞数组写入到Header元胞数组中
Header = 

    ''         'Test1'    'Test2'    'Test3'    'Mean'
    'Tom'      [   80]    [   90]    [  100]    [  90]
    'Joun'     [   70]    [   80]    [   90]    [  80]
    'Peter'    [   60]    [   70]    [   80]    [  70]

    
>> xlswrite('Score.xlsx', Header, 1, 'A1:E4')	%将数据保存在Score文件中

3.向文档(可以是.txt类型)中写入数据

①.程序功能:向sinx.txt的文档写入数据

x = 0:pi/10:pi; 
y = sin(x); 		%产生11组数据
fid = fopen('sinx.txt','w');		%打开文档
for i=1:11
	fprintf(fid,'%5.3f %8.4f\n', x(i), y(i));	%写入数据,‘5.3f’表示数据共5为,有3位小数
end
fclose(fid); 
type sinx.txt		%打开文档,同type('sinx.txt')一样

输出:

0.000   0.0000
0.314   0.3090
0.628   0.5878
0.942   0.8090
1.257   0.9511
1.571   1.0000
1.885   0.9511
2.199   0.8090
2.513   0.5878
2.827   0.3090
3.142   0.0000

②.程序功能:读取文档中的数据

fid = fopen('Data.txt','r');
i = 1;
while ~feof(fid)		% for end-of-file的简写,若指定到文档尾,返回1;否则返回0。若文档有n行,while将循环n次
	name(i,:) = fscanf(fid,'%5c',1);		%读取5个char型字符,获取一个数据
	year(i) = fscanf(fid,'%d',1);
	no1(i) = fscanf(fid,'%d',1);
	no2(i) = fscanf(fid,'%d',1);
	no3(i) = fscanf(fid,'%g',1);
	no4(i) = fscanf(fid,'%g\n');
	i=i+1;
end
fclose(fid);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值