我在eeglab中得到了一批经过处理的数据集。我想批量将所有这些导出到txt中,然而,这似乎必须逐个文件完成。
我是eeglab和matlab的新手。有人能帮我做这个吗?
这段代码是在我的目录中运行的,其中有EEGLAB。在我的情况下,该目录中还有2个数据集和相关的.fdt文件。如果.set文件位于EEGLAB的不同目录中,则必须更改代码才能在那里找到它们。脚本必须在EEGLAB目录中,否则EEGLAB源必须在PATH中,但我认为不建议将EEGLAB的代码放在PATH中。
我使用正则表达式(regexp
(来查找哪些文件是.set文件,并构建输出文件名。如果你不熟悉正则表达式,只需在网上搜索即可。
% read all the files in the directory
files = dir();
% parse directory contents for .set files
sets = {};
idx = 1;
for n=1:length(files)
if(regexp(files(n).name,'.set'))
sets{idx} = files(n).name;
idx = idx+1;
end
end
% load the data sets and write the data to appropriate filename
for n=1:length(sets)
% change the argument after filepath to the path your EEGLAB
% instalation is in
% note the double '' directory delimiter is for Windows
EEG = pop_loadset('filename', sets{n},'filepath','C:\Users\david.medine\matlab\toolboxes\eeglab2019_0\');
EEG = eeg_checkset( EEG );
outputfilename = sprintf('%stxt', sets{n}(1:regexp(sets{n}, '.set')))
writematrix(EEG.data, outputfilename);
end
顺便说一下,通过检查>> EEG.history
,我知道从EEGLAB调用什么函数来加载.set文件。这将显示在EEGLAB会话中GUI场景背后进行的所有Matlab代码。
EEGLAB以矢量化的方向存储数据。如果你想多路复用,只需转置矩阵:
writematrix(EEG.data', outputfilename);