0001 function fsd = subsasgn(fsd, index, val)
0002
0003
0004
0005
0006
0007
0008
0009
0010 if size(val,2) > size(val,1)
0011 val = val.';
0012 end
0013
0014 switch length(index)
0015 case 1
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
0043
0044 if index(1).type == '.'
0045
0046 fieldName = index(1).subs;
0047
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