,

Why does my ICA output contain complex numbers?

Independent component analysis (ICA) can not return more components than the rank of your data. For example, if your data contains 100 linearly independent channels, then the rank of your data would be 100, and you can compute up to 100 independent components. If your data contains 100 channels, of which 99 channels are independent but channel 100 is dependent on channel 99 (e.g. chan100 = -chan99), then the max number of independent components to fully describe your data would be 99. If you try to compute 100 components on this data set, it will fail. Componentanalysis will either return an error, or get into a loop and eventually give you output that contains complex numbers.

This might occur when you include reference channels in your data. It can be solved by excluding the reference channels from the component analysis, i.e:

cfg=[];
cfg.channel = {'all', '-refchan'};
test = ft_componentanalysis(cfg, data);

Or, alternatively, if you want to keep all the channels:

cfg=[];
cfg.runica.pca = 99; % channel number minus the number of dependent channels, in case of the example above 100-1=99
test = ft_componentanalysis(cfg, data);

This returns 99 components, and after back projection gives you again your 100 channels, which can be useful for plotting/interpretation purposes.

Note that for independent component analysis (with ft_componentanalysis), the EEGlab toolbox is required.

faq/why_does_my_ica_output_contain_complex_numbers.txt · Last modified: 2010/01/19 18:48 by saskia

You are here: startfaqwhy_does_my_ica_output_contain_complex_numbers
This DokuWiki features an Anymorphic Webdesign theme, customised by Eelke Spaak and Stephen Whitmarsh.
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0