0001 function plo = parseFilterParams(pl)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 plo = plist();
0025
0026
0027 type = find(pl, 'type');
0028 if isempty(type)
0029 type = 'lowpass';
0030 disp('- using default type ''lowpass''');
0031 end
0032 plo = append(plo, 'type', type);
0033
0034
0035 gain = find(pl, 'gain');
0036 if isempty(gain)
0037 gain = 1.0;
0038 disp(['- using default gain ' num2str(gain)]);
0039 end
0040 plo = append(plo, 'gain', gain);
0041
0042
0043 order = find(pl, 'order');
0044 if isempty(order)
0045 order = 64;
0046 disp(['- using default order ' num2str(order)]);
0047 end
0048 if mod(order,2) == 1
0049 warning('!!! reseting filter order to even number (+1)')
0050 order = order + 1;
0051 end
0052 plo = append(plo, 'order', order);
0053
0054
0055 fc = find(pl, 'fc');
0056 if isempty(fc)
0057 if strcmp(type, 'bandreject') || strcmp(type, 'bandpass')
0058 fc = [0.1 0.25];
0059 else
0060 fc = 0.1;
0061 end
0062 disp(['- using default fc ' num2str(fc)]);
0063 end
0064 plo = append(plo, 'fc', fc);
0065
0066
0067 fs = find(pl, 'fs');
0068 if isempty(fs)
0069 fs = 10*max(fc);
0070 warning([sprintf('!!! no sample rate specified. Designing for fs=%2.2fHz.', fs)...
0071 sprintf('\nThe filter will be redesigned later when used.')]);
0072 end
0073 plo = append(plo, 'fs', fs);
0074
0075
0076 win = find(pl, 'Win');
0077 if isempty(win)
0078
0079 win = specwin('Hamming', order+1);
0080 end
0081 if length(win.win) ~= order + 1
0082 warning('!!! setting window length to filter order !!!');
0083 switch win.name
0084 case {'Kaiser', 'Flattop'}
0085 win = specwin(win.name, order + 1, win.psll);
0086 otherwise
0087 win = specwin(win.name, order + 1);
0088 end
0089 end
0090 plo = append(plo, 'Win', win);
0091
0092
0093