[初学笔记]matlab中读取mat的数据
由于源代码是我⾃⼰的,所以选择了原创的分类
13.1 数据基本操作
本节介绍基本的数据操作,包括⼯作区的保存、导⼊和⽂件打开。
13.1.1 ⽂件的存储
MATLAB⽀持⼯作区的保存。⽤户可以将⼯作区或⼯作区中的变量以⽂件的形式保存,以备在需要时再次导⼊。保存⼯作区可以通过菜单进⾏,也可以通过命令窗⼝进⾏。
1. 保存整个⼯作区
选择File菜单中的Save Workspace As…命令,或者单击⼯作区浏览器⼯具栏中的Save,可以将⼯作区中的变量保存为MAT⽂件。
2. 保存⼯作区中的变量
在⼯作区浏览器中,右击需要保存的变量名,选择Save As…,将该变量保存为MAT⽂件。
3. 利⽤save命令保存
该命令可以保存⼯作区,或⼯作区中任何指定⽂件。该命令的调⽤格式如下:
● save:将⼯作区中的所有变量保存在当前⼯作区中的⽂件中,⽂件名为 matlab.mat,MAT⽂件可以通过load函数再次导⼊⼯作
区,MAT函数可以被不同的机器导⼊,甚⾄可以通过其他的程序调⽤。
● save('filename'):将⼯作区中的所有变量保存为⽂件,⽂件名由filename指定。如果filename中包含路径,则将⽂件保存在相应⽬录下,否则默认路径为当前路径。
● save('filename', 'var1', 'var2', ...):保存指定的变量在 filename 指定的⽂件中。
● save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。
● save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体s中的指定变量。
● save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量需满⾜的条件。
● save('..., 'format'),指定保存⽂件的格式,格式可以为MAT⽂件、ASCII⽂件等。
13.1.2 数据导⼊
MATLAB中导⼊数据通常由函数load实现,该函数的⽤法如下:
● load:如果matlab.mat⽂件存在,导⼊matlab.mat中的所有变量,如果不存在,则返回error。
● load filename:将filename中的全部变量导⼊到⼯作区中。
● load filename X Y Z ...:将filename中的变量X、Y、Z等导⼊到⼯作区中,如果是MAT⽂件,在指定变量时可以使⽤通配符“*”。
● load filename -regexp expr1 expr2 ...:通过正则表达式指定需要导⼊的变量。
● load -ascii filename:⽆论输⼊⽂件名是否包含有扩展名,将其以ASCII格式导⼊;如果指定的⽂件不是数字⽂本,则返回error。
● load -mat filename:⽆论输⼊⽂件名是否包含有扩展名,将其以mat格式导⼊;如果指定的⽂件不是MAT⽂件,则返回error。
例13-1 将⽂件matlab.map中的变量导⼊到⼯作区中。
⾸先应⽤命令whos –file查看该⽂件中的内容:
>> whos -file matlab.mat
Name Size Bytes Class
A 2x3 48 double array
I_q 415x552x3 687240 uint8 array
ans 1x3 24 double array
num_of_cluster 1x1 8 double array
Grand total is 687250 elements using 687320 bytes
将该⽂件中的变量导⼊到⼯作区中:
>> load matlab.mat
该命令执⾏后,可以在⼯作区浏览器中看见这些变量,如图13-1所⽰。
图13-1 导⼊变量后的⼯作区视图
接下来⽤户可以访问这些变量。
>> num_of_cluster
num_of_cluster =
3
MATLAB中,另⼀个导⼊数据的常⽤函数为importdata,该函数的⽤法如下:
● importdata('filename'),将filename中的数据导⼊到⼯作区中;
● A = importdata('filename'),将filename中的数据导⼊到⼯作区中,并保存为变量A;
● importdata('filename','delimiter'),将filename中的数据导⼊到⼯作区中,以delimiter指定的符号作为分隔符;
例13-2 从⽂件中导⼊数据。
>> imported_data = importdata('matlab.mat')
imported_data =
ans: [1.1813 1.0928 1.6534]
A: [2x3 double]
I_q: [415x552x3 uint8]
num_of_cluster: 3
与load函数不同,importdata将⽂件中的数据以结构体的⽅式导⼊到⼯作区中。
13.1.3 ⽂件的打开
MATLAB中可以使⽤open命令打开各种格式的⽂件,MATLAB⾃动根据⽂件的扩展名选择相应的编辑器。
需要注意的是open('filename.mat')和load('filename.mat')的不同,前者将filename.mat以结构体的⽅式打开在⼯作区中,后者将⽂件中的变量导⼊到⼯作区中,如果需要访问其中的内容,需要以不同的格式进⾏。
例13-3 open与load的⽐较。
>> clear
>> A = magic(3);
>> B = rand(3);
>> save
Saving to: matlab.mat
>> clear
>> load('matlab.mat')
>> A
A =
8 1 6
3 5 7
4 9 2
>> B
B =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> clear
>> open('matlab.mat')
ans =
A: [3x3 double]
B: [3x3 double]
>> struc1=ans;
>> struc1.A
ans =
8 1 6
3 5 7
4 9 2
>> struc1.B
ans =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
下⾯是我的尝试
% 画图前转格式
% xlsread('allvresultreedit.xls'); % 读取xls⽂件
% save ('allvresultreedit.mat'); % 转换为mat格式
load allvresultreedit.mat
whos -file allvresultreedit.mat
imported = importdata('allvresultreedit.mat')
open allvresultreedit.mat
>> whos -file allvresultreedit.mat
Name Size Bytes Class Attributes a 1x100 200 char
actloop 1x1 8 double
allsum 1x1 8 double
ans 3x1 24 double
b 1x98 196 char
cellnamesA 1x2 4 char
cellnamesB 1x2 4 char
cellnamesC 1x2 4 char
columns1 1x5 610 cell
columns2 1x10 1254 cell columns3 1x3 422 cell
d 1x1 8 double
datestring 1x15 30 char
ddata 1x3 360 cell
dmat 10x1 80 double
dmean 1x1 8 double
dreamyname 1x6 12 char drinfo 10x5 2028 cell
dstd 1x1 8 double
dsubclo 10x1 1200 cell
dsum 1x1 8 double
dvdq 10x2 3976 cell
file1 1x14 28 char
i 1x1 8 double
j 1x1 8 double
k 1x1 8 double
names 1x1 120 cell
output 1x43 86 char
output1 1x20 40 char
output2 1x19 38 char
res1 1x20 40 char
res2 1x23 46 char
res3 1x29 58 char
res4 1x12 24 char
res5 1x19 38 char
rowname2 1x1 132 cell
rr 1x1 2 char
ss 1x1 2 char
subtract 1x1 8 double
tfexp 1x1 8 double
tfloop 1x1 8 double
timecell 1x3 360 cell
tsexp 1x1 8 double
tstart 1x1 8 uint64
tt 1x1 2 char
txtfile1 1x1 8 double
w 1x3 6 char
writein1 2x5 1190 cell
writein3 1x10 1200 cell
writein4 2x3 782 cell
ydata 1x3 360 cell
ymat 10x1 80 double
ymean 1x1 8 double
you 1x1 900 struct
youinfo 5x1 580 cell
yourname 1x4 8 char
ystd 1x1 8 double
ysubclo 10x1 1200 cell
ysum 1x1 8 double
yvyq 10x2 3876 cell
>> imported = importdata('allvresultreedit.mat') imported =
ans: [3x1 double]
tstart: 2386826382023
d: 5
w: 'Thu'getsavefilename
datestring: 'Thu-14-Sep-2017'
yvyq: {10x2 cell}
dvdq: {10x2 cell}
res1: 'Not easy. GOOD LUCK!'
res2: 'Get to KNOW MORE about '
res3: 'SOORY. Time to say goodbye to'
res4: 'Keep trying!'
res5: 'Go and get DATING!!'
ysum: 60
dsum: 50
ymean: 6
dmean: 5
ystd: 0
dstd: 0
subtract: 10
allsum: 110
you: [1x1 struct]
youinfo: {5x1 cell}
yourname: 'feng'
file1: 'allvresult.xls'
columns1: {'name' 'country' 'age' 'gender' 'major'} writein1: {2x5 cell}
tsexp: 15.1041
tfloop: 3
actloop: 4
drinfo: {10x5 cell}
k: 3
dreamyname: 'youooo'
j: 11
b: 'will dreamy's family and friend like you?\n (1 ' dsubclo: {10x1 cell}
dmat: [10x1 double]
rr: '5'
cellnamesA: 'A5'
ss: '7'
cellnamesB: 'B7'
tt: '6'
cellnamesC: 'B6'
names: {'feng'}
columns2: {1x10 cell}
writein3: {[5] [5] [5] [5] [5] [5] [5] [5] [5] [5]}
columns3: {'proc_start' 'experiment_start' 'experiment_finish'}
ddata: {[50] [5] [0]}
i: 11
a: 'Do your family and friends like the dreamy?\n (1 ' ysubclo: {10x1 cell}
ymat: [10x1 double]
output1: 'Not easy. GOOD LUCK!'
output2: 'Go and get DATING!!'
writein4: {2x3 cell}
ydata: {[60] [6] [0]}
txtfile1: 3
output: '
Not easy. GOOD LUCK!
Go and get DATING!!
'
tfexp: 155.0612
rowname2: {'time count'}
timecell: {[2386826382023] [15] [155]}
>> open allvresultreedit.mat
ans =
ans: [3x1 double]
tstart: 2386826382023
d: 5
w: 'Thu'
datestring: 'Thu-14-Sep-2017'
yvyq: {10x2 cell}
dvdq: {10x2 cell}
res1: 'Not easy. GOOD LUCK!'
res2: 'Get to KNOW MORE about '
res3: 'SOORY. Time to say goodbye to'
res4: 'Keep trying!'
res5: 'Go and get DATING!!'
ysum: 60
dsum: 50
ymean: 6
dmean: 5
ystd: 0
dstd: 0
subtract: 10
allsum: 110
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论