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);