SUBSREF Define field name indexing for parameter objects. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: SUBSREF Define field name indexing for parameter objects. EXAMPLES: All possible accesses are possible. VERSION: $Id: subsref.m,v 1.5 2007/08/01 13:55:52 ingo Exp $ HISTORY: 31-01-07 M Hewitson Creation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 function B = subsref(A, S) 0002 % SUBSREF Define field name indexing for parameter objects. 0003 % 0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0005 % 0006 % DESCRIPTION: SUBSREF Define field name indexing for parameter objects. 0007 % 0008 % EXAMPLES: All possible accesses are possible. 0009 % 0010 % VERSION: $Id: subsref.m,v 1.5 2007/08/01 13:55:52 ingo Exp $ 0011 % 0012 % HISTORY: 31-01-07 M Hewitson 0013 % Creation 0014 % 0015 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0016 B = builtin('subsref', A, S); 0017 0018 % function b = subsref(p, index) 0019 % % SUBSREF Define field name indexing for param objects. 0020 % % 0021 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0022 % % 0023 % % DESCRIPTION: SUBSREF Define field name indexing for param objects. 0024 % % 0025 % % EXAMPLES: 0026 % % 0027 % % nesting level == 1 0028 % % >> p = p_vector(2); 0029 % % >> key = p.key 0030 % % >> val = p.val 0031 % % >> version = p.version 0032 % % 0033 % % nesting level == 2 0034 % % >> p = p_vector(1).val 0035 % % >> val = p.val(1) 0036 % % >> val = p.val{1} 0037 % % 0038 % % VERSION: $Id: subsref.m,v 1.5 2007/08/01 13:55:52 ingo Exp $ 0039 % % 0040 % % HISTORY: 31-01-07 M Hewitson 0041 % % Creation 0042 % % 0043 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0044 % 0045 % b = []; 0046 % 0047 % switch length(index) 0048 % % INFO: p(1) 0049 % % p{1} 0050 % % p.key 0051 % % p.val 0052 % % p.version 0053 % case 1 % p(1) or p.key 0054 % switch index.type 0055 % case '()' 0056 % idx = index.subs{1}; 0057 % b = p(idx); 0058 % case '{}' 0059 % idx = index.subs{1}; 0060 % b = p{idx}; 0061 % case '.' 0062 % switch index.subs 0063 % case 'key' 0064 % b = p.key; 0065 % case 'val' 0066 % b = p.val; 0067 % case 'version' 0068 % b = p.version; 0069 % otherwise 0070 % error('### unknown field for param object.'); 0071 % end 0072 % otherwise 0073 % error('### unknown indexing method for param objects.'); 0074 % end 0075 % case 2 % p(1).key 0076 % 0077 % % INFO: p.val(1) 0078 % % p.val{2} 0079 % if index(1).type == '.' 0080 % fieldName = index(1).subs; 0081 % 0082 % if length(p) == 1 0083 % eval(sprintf('b = subsref (p.%s, index(2));',fieldName)) 0084 % else 0085 % error(['### output is not defined because the '... 0086 % 'parameter is a vector or matrix.']); 0087 % end 0088 % 0089 % % INFO: p(1).val 0090 % elseif index(1).type == '()' 0091 % idx = index(1).subs{1}; 0092 % switch index(2).subs 0093 % case 'key' 0094 % b = p(idx).key; 0095 % case 'val' 0096 % b = p(idx).val; 0097 % case 'version' 0098 % b = p(idx).version; 0099 % otherwise 0100 % error('### unknown field for param object.'); 0101 % end 0102 % else 0103 % error('### unknown indexing method for parameter objects.'); 0104 % end 0105 % 0106 % otherwise 0107 % error('### unknown indexing method for parameter objects.'); 0108 % end 0109 % 0110 % % END 0111 %