[初学笔记]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小时内删除。