📄 hfir.sci
字号:
// designs a complex tap fir filter akin to the hilbert transformer.//// The hilbert transformer is classified as a linear phase fir// with allpass magnitude response and 90 degree phase response for// positive frequencies and -90 degrees phase for negative frequencies.// Or, if you prefer, normalized frequencies between .5 and 1 since// negative frequencies don't really have much meaning outside the complex// domain.//// Normally one would use the hilbert transformer in one leg of a complex// processing block and a compensating delay in the other.//// This one differs in the following respects:// It is low pass with a cutoff of .078125// The filter is a lowpass kaiser windowed filter with parameter 3// The phase response is 45 degrees for positive frequencies and -45// for negative frequencies.// The coefficent set is used in one path and the same coefficients// are used time reversed in the other. This results in the net effect// of +/- 90 degrees as in the usual hilbert application.//// The coefficient set can be used in the gnuradio frequency translating// fir filter for ssb demodulation.//// This isn't as computationally efficient as using the hilbert transformer// and compensating delay but fascinating none the less.//// This program is for the scilab language a very powerful free math // package similar to Matlab with infinitely better price/performace.//// compute the prototype lowpass fir// length is 255 (odd) for the same symmetry reasons as the hilbert transformerlen = 1023;l2 = floor(len/2);md = l2 + 1;l3 = md + 1;h = wfir( 'lp', len, [10.0/256 0], 'kr', [3 0] );H = fft(h);H(1:l2)=H(1:l2)*exp(%i*%pi/4);H(md)=0+%i*0;H(l3:len)=H(l3:len)*exp(-%i*%pi/4);j=real(ifft(H));k(1:len)=j(len:-1:1);x=j+%i.*k;X=fft(x);plot(abs(X))f = file('open','taps')for i=(1:len) fprintf( f, '%f%+fj', j(i), k(i) )endfile('close',f)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -