--- a +++ b/functions/@memmapdata/subsasgn.m @@ -0,0 +1,59 @@ +% SUBSASGN - define index assignment for eegdata objects +% +% Author: Arnaud Delorme, SCCN, INC, UCSD, Nov. 2008 + +% Copyright (C) 2008 Arnaud Delorme, SCCN, INC, UCSD +% +% This file is part of EEGLAB, see http://www.eeglab.org +% for the documentation and details. +% +% Redistribution and use in source and binary forms, with or without +% modification, are permitted provided that the following conditions are met: +% +% 1. Redistributions of source code must retain the above copyright notice, +% this list of conditions and the following disclaimer. +% +% 2. Redistributions in binary form must reproduce the above copyright notice, +% this list of conditions and the following disclaimer in the documentation +% and/or other materials provided with the distribution. +% +% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +% THE POSSIBILITY OF SUCH DAMAGE. + +function b = subsasgn(a,index,val) + + i.type = '()'; + i.subs = { ':' ':' ':' }; + b = subsref(a, i); % note that subsref cannot be called directly + c = subsref(val, i); + b = builtin('subsasgn', b, index, c); + return; + + +switch index.type + case '()' + switch length(index.subs) + case 1, a.data(index.subs{1}) = val; + case 2, a.data(index.subs{1}, index.subs{2}) = val; + case 3, a.data(index.subs{1}, index.subs{2}, index.subs{3}) = val; + case 4, a.data(index.subs{1}, index.subs{2}, index.subs{3}, index.subs{4}) = val; + end + case '.' + switch index.subs + case 'srate' + a.srate = val; + case 'nbchan' + a.nbchan = val; + otherwise + error('Invalid field name') + end +end