0001 function ltpdv_fcn_run(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010 myh = varargin{1};
0011 tag = varargin{end-2};
0012 panH = varargin{end-1};
0013 mainfig = varargin{end};
0014
0015
0016 switch tag
0017 case 'preproc'
0018 listtag = 'LTPDVpreprocfcnlist';
0019 ptag = 'LTPDVpreprocparampan';
0020 case 'spectral'
0021 listtag = 'LTPDVspectralfcnlist';
0022 ptag = 'LTPDVspectralparampan';
0023 otherwise
0024 error('### Unknown function set');
0025 end
0026 fcnh = findobj(panH, 'Tag', listtag);
0027 val = get(fcnh, 'Value');
0028 strs = get(fcnh, 'String');
0029 fcn = strs{val};
0030
0031
0032 parampanh = findobj(panH, 'Tag', ptag);
0033 pancomps = getappdata(parampanh, 'pancomps');
0034
0035
0036 pl = plist();
0037 for j=1:size(pancomps,1)
0038
0039
0040 keyf = pancomps{j,1};
0041 valf = pancomps{j,2};
0042 actf = pancomps{j,3};
0043
0044
0045 if get(actf, 'Value')
0046
0047 key = get(keyf, 'String');
0048
0049
0050 valclass = getappdata(valf, 'valClass');
0051
0052 switch valclass
0053 case 'char'
0054 val = get(valf, 'String');
0055 case 'double'
0056 val = get(valf, 'String');
0057 try
0058 val = eval(val);
0059 end
0060 case 'specwin'
0061 strs = get(valf, 'String');
0062 idx = get(valf, 'Value');
0063 val = strs{idx};
0064 if strcmp(val, 'Kaiser')
0065 val = specwin(val, 10, 150);
0066 else
0067 val = specwin(val, 10);
0068 end
0069 otherwise
0070 error(['### Unsupported value class: ' valclass]);
0071 end
0072
0073
0074 pl = append(pl, key, val);
0075
0076 end
0077 end
0078
0079
0080 objs = ltpdv_get_selected_objs(mainfig);
0081
0082
0083 as = [];
0084 for j=1:numel(objs)
0085 obj = objs{j};
0086 if isa(obj, 'ao')
0087 as = [as obj];
0088 else
0089 warning('!!! Skipping object %s - it''s not an AO', obj.name);
0090 end
0091 end
0092
0093
0094 res = feval(fcn, as, pl);
0095
0096
0097 for j=1:numel(res)
0098 objs = getappdata(mainfig, 'LTPDAobjects');
0099 setappdata(mainfig, 'LTPDAobjects', [objs {res(j)}]);
0100 end
0101
0102 ltpdv_refresh_object_list(mainfig);
0103
0104 end
0105
0106