Home > classes > @fsdata > subsasgn.m

subsasgn

PURPOSE ^

SUBSASGN define index assignment for vectors in fsdata.

SYNOPSIS ^

function fsd = subsasgn(fsd, index, val)

DESCRIPTION ^

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

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function fsd = subsasgn(fsd, index, val)
0002 
0003 % SUBSASGN define index assignment for vectors in fsdata.
0004 %
0005 % M Hewitson 30-01-07
0006 %
0007 % $Id: subsasgn.html,v 1.1 2007/06/08 14:15:05 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   % fsd(idx) = [] or fsd.f = [] or fsd.xx = []
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         fsd.f(idx)  = val(1,:);
0023         fsd.xx(idx) = val(2,:);
0024       case '.'
0025         switch index.subs
0026           case 'f'
0027             fsd.f = val;
0028             if length(val) ~= length(fsd.xx)
0029               warning('!!! Frequency vector not consistent with xx vector');
0030             end
0031           case 'xx'
0032             fsd.xx = val;            
0033             if length(val) ~= length(fsd.xx)
0034               warning('!!! xx vector not consistent with frequency vector');
0035             end
0036           otherwise
0037             error('### unknown field for indexing.');
0038         end                
0039       otherwise
0040         error('### unknown indexing method for fsdata 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 'f'
0051           fsd.f(idx) = val;
0052         case 'xx'
0053           fsd.xx(idx) = val;
0054         otherwise
0055           error('### unknown field to index 1.');
0056         end
0057     else      
0058       error('### unknown indexing method for fsdata objects.');
0059     end   
0060     
0061   otherwise
0062     error('### unknown indexing method for fsdata objects.');    
0063 end
0064 
0065 % END

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