一、前言
当我们利用matlab去处理我们的实验数据时,常常需要读取mat格式、xlsx格式文件,而且有时候我们又将利用Python去做后续工作,这时候我们就迫切需要了解矩阵与mat格式、xlsx格式文件怎样实现互转的。
二、.mat格式
1、将矩阵存储为.mat格式
当我们工作区有一个1500*1的矩阵,我们想将其以.mat格式存储起来
命令:save('filename.mat','data');其中filename是要存储的名字,data是要存储的矩阵
save('raw_data.mat','raw_data'); %存入当前目录下 save('./幅值数据/raw_data.mat','raw_data'); %存入指定的目录下
2、读取.mat数据文件
load('./幅值数据/raw_data.mat')
三、.xlsx格式
1、将矩阵存储为.xlsx格式数据文件
我们要使用xlswrite来将矩阵写入到表格文件中,如果不清楚这个命令的话,可以在控制台输入:“help xlswrite”即可知道它的用法了。
(1)xlswrite('1.xlsx',A);将矩阵A写入Excel电子表格工作簿1.xlsx中的第一张工作表,从单元格 A1 开始写入。
(2)xlswrite(filename,A,sheet) 将数据写入指定的工作表。
(3)xlswrite(filename,A,xlRange) 将数据写入工作簿的第一个工作表中由 xlRange 指定的矩形区域内。使用 Excel 范围语法,例如 'A1:C3'。
如果我们有个需求,就是将矩阵raw_data,写入到指定文件夹下(比如:幅值文件夹下),将该矩阵写入到第一个工作表中,且将所有1500*1数据写入到第二列该怎么操作呢?
xlswrite('./幅值数据/raw_data.xlsx',raw_data,1,'B1:B1500');
2、读取.xlsx格式数据文件
我们要使用xlsread来读取.xlsx文件,如果不清楚这个命令的话,可以在控制台输入:“help xlsread”即可知道它的用法了。它其实和上面的差不多,举个例子大家就明白了。比如:我们要读取工作表1,第2列的所有数据,只需输入下列命令就可。
raw_data=xlsread('./幅值数据/raw_data.xlsx',1,'B1:B1500'); %读取数据
四、出现load(‘file.mat’) 数据变成struct结构体的问题
当我们加载数据的时候,诸如:Amp1=load('.\幅值数据\1-0.2.mat'),会变成下列样子:
我们发现用load加载.mat文件时,如果进行了赋值就会变成结构体struct型,如果不赋值,诸如:load('.\幅值数据\1-0.2.mat'),则加载的数据为原来的数据类型。有两种解决方案,如下:
1、如果不需要将数据赋值给另外一个变量的话,直接使用load(‘file.mat’)进行数据加载;
2、如果我们一定要将数据赋值给另外一个变量的话,就需要使用importdata(‘file.mat’)进行数据加载了。
3、当然赋值变成结构体,我们还可以利用结构体的调用方式去调用结构体的属性,比如以Amp1. mydata这种方式去进行数据加载。