Example of de-meaning
- For CoSMoMVPA's copyright information and license terms, #
- see the COPYING file distributed with CoSMoMVPA. #
Contents
Generate random dataset
ds=cosmo_synthetic_dataset('nchunks',4,'ntargets',3); % add some constant to all data ds.samples=ds.samples+2; % show dataset subplot(2,2,1); imagesc(ds.samples,[-4 4]) title('before demeaning'); subplot(2,2,2); hist(ds.samples(:),10) xlim([-6 6]);
Split the dataset by chunks
>@@>
splits=cosmo_split(ds,{'chunks'},1); % <@@< nsplits=numel(splits); % allocate space for output outputs=cell(nsplits,1); % treat each element in splits seperately, and subtract the mean for each % feature seperately for k=1:nsplits d=splits{k}; % >@@> % mean over samples, for each feature mu=mean(d.samples,1); % subtract the mean. % equivalent, but less efficient, is: % nsamples=size(d.samples,1); % d.samples=d.samples-repmat(mu,nsamples,1); % d.samples=bsxfun(@minus,d.samples,mu); % <@@< % store output outputs{k}=d; end ds_demeaned=cosmo_stack(outputs); % show dataset subplot(2,2,3); imagesc(ds_demeaned.samples,[-4 4]) title('after demeaning'); subplot(2,2,4); hist(ds_demeaned.samples(:),10); xlim([-6 6]);
Alternative approach to demeaning
% note: the samples in the output are in a different order than the input, % but otherwise the same demeaner=@(x)bsxfun(@minus,x,mean(x,1)); % function handle as helper ds_demeaned_alt=cosmo_fx(ds,demeaner,'chunks');