0001 function f = filload(filename)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 delims = ' \n';
0012 in = fopen(filename, 'rt');
0013
0014 name = filename(1:end-4);
0015
0016 if(in < 0)
0017 error(['can not open file ' filename]);
0018 end
0019 lbuffer = fgets(in);
0020 n = 1;
0021 nacoeffs = 0;
0022 nbcoeffs = 0;
0023 filt.a = [];
0024 filt.b = [];
0025 norminst = '';
0026
0027 while (lbuffer > 0)
0028 if(length(lbuffer) > 1)
0029
0030 [token, r] = strtok (lbuffer, delims);
0031
0032
0033 if(strcmp(token, 'iir'))
0034 [token, r] = strtok (r, delims);
0035 fs = str2num(token);
0036 end
0037
0038
0039 if(token(1) == 'a')
0040 [token, r] = strtok (r, delims);
0041 nacoeffs = nacoeffs+1;
0042 filt.a(nacoeffs) = str2num(token);
0043 end
0044
0045 if(token(1) == 'b')
0046 [token, r] = strtok (r, delims);
0047 nbcoeffs = nbcoeffs+1;
0048 filt.b(nbcoeffs) = str2num(token);
0049 end
0050
0051 end
0052
0053 n = n + 1;
0054 lbuffer = fgets(in);
0055 end
0056 fclose(in);
0057
0058 if(nacoeffs > nbcoeffs)
0059 error('## unstable filter: nacoeffs > nbcoeffs');
0060 end
0061
0062 if(nacoeffs < nbcoeffs)
0063 filt.a = [filt.a zeros(1,(nbcoeffs-nacoeffs))];
0064 end
0065
0066 ncoeffs = nbcoeffs;
0067
0068
0069 f.name = name;
0070 f.fs = fs;
0071 f.ntaps = ncoeffs;
0072 f.a = filt.a;
0073 f.b = filt.b;
0074 f.g = 1;
0075 f.histin = zeros(1, f.ntaps-1);
0076 f.histout = zeros(1, f.ntaps-1);
0077
0078
0079
0080