-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathxdf_inspect.m
57 lines (45 loc) · 2.05 KB
/
xdf_inspect.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function [streamNames, channelMetaData] = xdf_inspect(streams)
% XDF metadata should follow the specification on pages below
%
% https://github.com/sccn/xdf/wiki/MoCap-Meta-Data
% https://github.com/sccn/xdf/wiki/EEG-Meta-Data
% max. number of channels to disply
cMax = 5;
% inspect source data
streamNames = {};
channelMetaData = {};
for Si = 1:numel(streams)
disp(['Stream ' num2str(Si) ' name : ' streams{Si}.info.name])
streamNames{end+1} = streams{Si}.info.name;
if isfield(streams{Si}.info.desc, 'channels')
nChan = numel(streams{Si}.info.desc.channels.channel);
disp([num2str(nChan) ' channels were found'])
cInd = 1;
while cInd <= nChan && cInd <= cMax
if ~isfield(streams{Si}.info.desc.channels.channel{cInd}, 'label')
warning('Channel info is missing "label" field, manually add metadata')
streams{Si}.info.desc.channels.channel{cInd}.label = 'n/a';
end
if ~isfield(streams{Si}.info.desc.channels.channel{cInd}, 'type')
warning('Channel info is missing "type" field, manually add metadata')
streams{Si}.info.desc.channels.channel{cInd}.type = 'n/a';
end
if ~isfield(streams{Si}.info.desc.channels.channel{cInd}, 'unit')
warning('Channel info is missing "unit" field, manually add metadata')
streams{Si}.info.desc.channels.channel{cInd}.unit = 'n/a';
end
disp([streams{Si}.info.desc.channels.channel{cInd}.label, ...
', type ' streams{Si}.info.desc.channels.channel{cInd}.type...
', unit ' streams{Si}.info.desc.channels.channel{cInd}.unit])
cInd = cInd + 1;
if cInd > nChan || cInd > cMax
disp('...')
end
end
channelMetaData{end+1} = streams{Si}.info.desc.channels.channel;
else
disp('No channel info provided')
channelMetaData{end+1} = [];
end
end
end