Home > classes > @tsdata > subsasgn.m

subsasgn

PURPOSE ^

SUBSASGN define index assignment for vectors in tsdata.

SYNOPSIS ^

function ts = subsasgn(ts, index, val)

DESCRIPTION ^

 SUBSASGN define index assignment for vectors in tsdata.
 
 M Hewitson 30-01-07
 
 $Id: subsasgn.html,v 1.1 2007/06/08 14:15:09 hewitson Exp $

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function ts = subsasgn(ts, index, val)
0002 
0003 % SUBSASGN define index assignment for vectors in tsdata.
0004 %
0005 % M Hewitson 30-01-07
0006 %
0007 % $Id: subsasgn.html,v 1.1 2007/06/08 14:15:09 hewitson Exp $
0008 %
0009 
0010 if size(val,2) > size(val,1)
0011   val = val.';
0012 end
0013 
0014 switch length(index)
0015   case 1   % ts(idx) = [] or ts.t = [] or ts.x = []
0016     switch index.type
0017       case '()'
0018         idx = index.subs{1};
0019         if length(val) ~= length(idx)
0020           error('### number of values does not match number of indices.');
0021         end
0022         ts.t(idx) = val(1,:);
0023         ts.x(idx) = val(2,:);
0024       case '.'
0025         switch index.subs
0026           case 't'
0027             ts.t = val;
0028             if length(val) ~= length(ts.x)
0029               warning('!!! Time vector no consistent with x vector');
0030             end
0031           case 'x'
0032             ts.x = val;            
0033             if length(val) ~= length(ts.t)
0034               warning('!!! x vector no consistent with time vector');
0035             end
0036           otherwise
0037             error('### unknown field for indexing.');
0038         end                
0039       otherwise
0040         error('### unknown indexing method for tsdata objects.');
0041     end
0042   case 2 % ts.t(idx) = [] or ts.x(idx) = []
0043     
0044     if index(1).type == '.'
0045       % first index gets us field name
0046       fieldName = index(1).subs;
0047       % second index gets us indices
0048       idx = index(2).subs{1};
0049       switch fieldName
0050         case 't'
0051           ts.t(idx) = val;
0052         case 'x'
0053           ts.x(idx) = val;
0054         otherwise
0055           error('### unknown field to index 1.');
0056         end
0057     else      
0058       error('### unknown indexing method for tsdata objects.');
0059     end
0060     
0061   otherwise
0062     error('### unknown indexing method for tsdata objects.');    
0063 end
0064 
0065 % END

Generated on Fri 08-Jun-2007 16:09:11 by m2html © 2003