查看原文
其他

代码分享|将neauscan自带软件scan导出的.avg格式文件导入matlab画图

周翊 茗创科技 2021-09-15

大家好,我是茗创科技的周翊,近日在给一位朋友绘制论文用图时,客户提供的是neauscan的avg文件,我们知道使用neauscan提供的scan软件分析的脑电数据叠加平均以后会得到一个avg格式的文件,如果想要导出到matlab里面画图貌似并没有现成的方法,差点就把我难倒了



虽然eeglab界面并没有提供一个现成的选择框载入.avg文件,但是可以使用函数eeg_load_scan4_avg获得,这是本脚本的核心代码如下;


函数:eeg_load_scan4_avg

用法:[f,fid] = eeg_load_scan4_avg(filename)


变量介绍:

f:这是一个结构体,里面包含了avg数据的所有内容,类似于读cnt的那个函数的输出变量,这个结构体里面包含

f.header        - general header parameters

f.electloc      - channel specific parameters

f.data.header   - small channel data header

f.data.samples  - channel data (not uV)

f.variance      - channel variance

f.tag           - scan4.1 file tags

fid: 文件的一个指针,这里基本没啥用

filename:文件名,和loadcnt当中的file一样。


完整代码如下,分享给各位

%% 首先清空工作区的变量,以免对我们接下来的操作造成影响clear all;clc;load('EEG.mat');
%% 载入数据 ERP的绘制% 在这里为了方便查看,我导出了PDF图,又为了方便后期编辑与修图,我同时导出了eps格式的图片,这样就能够导入AI进行精修作图了fig_path = 'D:\Docu\Project\draw_pic\data\ERP';cd(fig_path);% 读取所有的avg格式文件;fig_files = dir([fig_path,filesep,'*.avg']);% 对每个文件进行读取for fig_No = 1:length(fig_files) exp_con_name = fig_files(fig_No).name(1:end-4) % 每个avg文件生成一个文件夹 mkdir([fig_path,filesep,exp_con_name]);cd([fig_path,filesep,exp_con_name]); % 读取avg文件 [f,fid] = eeg_load_scan4_avg(['D:\Docu\Project\draw_pic\data',filesep,fig_files(fig_No).name]); % 将avg文件内的数据转为数组形式 for i = 1:65 EEG_avg(i,:)=(f.data(i).samples)'; end % 每个通道电极点 for chan_point = 1:65 % chan_point = 28; % 因为不可知的原因,数据需要除以20才能得到真实的幅值 mean_data = squeeze(EEG_avg(chan_point,:))./20; figure; plot(EEG.times, mean_data,'linewidth', 1.5); %% plot waveforms for different conditions set(gca,'YDir','reverse','XAxisLocation','origin','YAxisLocation','origin','LineWidth',2.0,'box','off'); axis([-200 1000 -4 12]); %% define the region to display title(['Group level data at',EEG.chanlocs(chan_point).labels],'fontsize',16); xlabel('Latency (ms)','fontsize',16); ylabel('Amplitude (uV)','fontsize',16); print(gcf,[exp_con_name,'_',EEG.chanlocs(chan_point).labels],'-dpdf','-r600'); print 1.eps -depsc2 -r600; % 由于不知道如何设定合适的文件名,所以保存以后再使用下面的函数进行修改文件名 movefile('1.eps',[exp_con_name,'_',EEG.chanlocs(chan_point).labels,'.eps']); close all; endend
% Copyright (c) 2020-2021 MCKJ. All rights reserved.

更多需要扫码咨询

↓ ↓ ↓


: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存