- 前言
- 一、文件读入
- 1.xlsx文件
- 二、文件保存
- 1.保存变量为mat格式
- 注意
- 三、变量
- 1.储存字符变量
- 2.结构体
- 四、数据类型转换
- 1.元组转数字
- 总结
前言
最近的代码大多都是用matlab来编程的,但是我关于matlab的学习一直都是需要什么去百度或者帮助里面搜索,语法掌握不如python,避免不了一直进行重复搜索,因此通过这个博客将自己遇到的知识点进行汇总,为以后编程时提供便利。
一、文件读入 1.xlsx文件[num,txt,raw]=xlsread('G:datasetCHB-MIT波士顿儿童医院癫痫EEG脑电数据data_summary_copy.xlsx',1);
- 其中:num返回的是excel中的数据,txt输出的是文本内容,raw输出的是未处理数据。为了直接处理所有的数据,我一般习惯用raw来进行后续操作
- txt和raw为元组(cell),可以通过raw{i,j}获取第i行和第j列的值
- 代码最后的1代表读取第一个活动表中的内容
[num,txt,raw]=xlsread('G:datasetCHB-MIT波士顿儿童医院癫痫EEG脑电数据data_summary_copy.xlsx',1,'A2:C5');
%代表读取第1个活动表中A2-C5之间的内容
二、文件保存
1.保存变量为mat格式
save '01.mat' phase_syn
将变量phase_syn保存为在当前路径下的文件名为’01.mat’,也可以通过直接写绝对或相对路径保存在自己想要的路径下
注意如果多次循环处理时,想每次保存时用变量来代表文件名,保存方式如下:save(filename,'a');filename为变量名(存放文件名),a为需要保存的变量。
因为没有注意正确的格式,导致跑了一个下午的代码只保存了最后一轮。
savename = ['sub01_' freq_name{i} '.mat'];
save savename phase_syn;
save savename 'phase_syn';
% 这两种保存方式会把变量直接保存成 savename.mat,需要注意!!!!
save ['sub01_' freq_name{i} '.mat'] phase_syn;
%这样会保存成['sub01_' freq_name{i} '.mat'].mat
save(['sub01_' freq_name{i} '.mat'],phase_syn);
% 会报错,报错信息:必须为字符串标量或字符向量。
save(['sub01_' freq_name{i} '.mat'],'phase_syn');
% 这样也可以成功保存,要把需要保存的变量名加上引号
三、变量
1.储存字符变量
可以通过两种方式:
- s = char('alpha','beta','gamma');得到二维字符数组
- freq_name = {'delta','theta','alpha','beta','gamma'};可以通过元组的方式,通过freq_name{i}可以读取第i个
- 尝试了用[‘delta’,‘theta’,‘alpha’,‘beta’,‘gamma’],发现会直接拼接到一起,这是字符串拼接的一个方法
利用结构体数组可以在一个数组中存放不同类型的数据,自我感觉有点类似与python中的字典,非常好用。结构体数组的基本单位是域,在matlab中,可以随时增减域。
% 创建结构体
phase_syn = struct('name',[],'is_seizure',[],'phase',[],'seizure_time',[],'seizure_num',[]);
% 储存数据,例如:
phase_syn(1).name = 'sub01';
phase_syn(2).name = 'sub02';
四、数据类型转换
1.元组转数字
代码示例
a = str2num('[]');
isempty(a);
% 输出为1,说明a为空
a = str2num('[111 222]')
%输出为 111 222
a(1)
%输出为 111
a(2)
%输出为222
总结
边遇到问题边整理~



