如何用matlab实现矩阵与mat格式、xlsx格式文件互转

目录

一、前言

二、.mat格式

三、.xlsx格式

四、出现load(‘file.mat’) 数据变成struct结构体的问题


一、前言

当我们利用matlab去处理我们的实验数据时,常常需要读取mat格式、xlsx格式文件,而且有时候我们又将利用Python去做后续工作,这时候我们就迫切需要了解矩阵与mat格式、xlsx格式文件怎样实现互转的。

二、.mat格式

1、将矩阵存储为.mat格式

当我们工作区有一个1500*1的矩阵,我们想将其以.mat格式存储起来

4274057c225641a5a0acff0fef874859.png

 命令:save('filename.mat','data');其中filename是要存储的名字,data是要存储的矩阵

save('raw_data.mat','raw_data'); %存入当前目录下
save('./幅值数据/raw_data.mat','raw_data'); %存入指定的目录下

 64eb50aecb504757ac421e6d8737905b.png

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

144a1bd1b6094c3e846a3808c37383b1.png

2、读取.xlsx格式数据文件

 我们要使用xlsread来读取.xlsx文件,如果不清楚这个命令的话,可以在控制台输入:“help xlsread”即可知道它的用法了。它其实和上面的差不多,举个例子大家就明白了。比如:我们要读取工作表1,第2列的所有数据,只需输入下列命令就可。

raw_data=xlsread('./幅值数据/raw_data.xlsx',1,'B1:B1500'); %读取数据

65083eeeac7f45e1bf393ca1f3838cad.png

四、出现load(‘file.mat’) 数据变成struct结构体的问题

当我们加载数据的时候,诸如:Amp1=load('.\幅值数据\1-0.2.mat'),会变成下列样子:

eb56c2391d2545dd8dfbbc9bbfcf772d.png

我们发现用load加载.mat文件时,如果进行了赋值就会变成结构体struct型,如果不赋值,诸如:load('.\幅值数据\1-0.2.mat'),则加载的数据为原来的数据类型。有两种解决方案,如下:

1、如果不需要将数据赋值给另外一个变量的话,直接使用load(‘file.mat’)进行数据加载;

2、如果我们一定要将数据赋值给另外一个变量的话,就需要使用importdata(‘file.mat’)进行数据加载了。

3、当然赋值变成结构体,我们还可以利用结构体的调用方式去调用结构体的属性,比如以Amp1. mydata这种方式去进行数据加载。

猜你喜欢

转载自blog.csdn.net/qq_53860947/article/details/127500337