Reply by DSP_student November 5, 20082008-11-05
Fred,

Thank you very much for your comment! You've helped me a great deal.
I've contacted prof. Israel and I found relevant things searching for
antenna arrays, just as you told me.

Thank you again and have a great day.
Reply by Fred Marshall November 4, 20082008-11-04
move wrote:
> On Nov 3, 11:08 pm, "DSP_student" <sz...@t2.technion.ac.il> wrote: >> Hello everyone, >> >> I would like to know whether it's possible to find a sequence of FIR >> coefficients of even length such that each coefficient can be 1 out >> of 5 possibilities: 1, -1, 0, j, -j. I'm trying to create a >> Band-Stop filter using a sequence of coefficients like this. >> >> The literature is packed with all sorts of low-correlation >> sequences, and some of them (like legendre sequences) possess a DC >> notch. This is good, but i'm looking for the ability to create >> notches at each one of the frequency samples, not just the DC. >> >> Can anyone help me with relevant information? >> >> Thank you in advance, >> Dan
I would jump to the antenna literature. This looks like an equispaced phased line array of equally-weighted elements at a single frequency where +1/-1 are just inversions and +j/-j are 90 degree phase shifts. The "band stop" is analagous to a steered null in the antenna pattern in the plane of the line array. Just add that you're sampling the antenna pattern and you want the nulls right on one of the samples. What you want is an "omni with a null". I did something similar: The objective was to create an all-pass FIR(and you want the same but with a zero somewhere in it). The objective was to have all of the coefficients be "close to" +1/-1. (So, why not exactly +/-1?) It didn't have to be symmetric - in fact, I didn't want it to be symmetric. I was using a minimax criterion. So, started out with an all pass with sinusoidal ripple. This yielded to a closed form expression given the ripple. Next the closed form expression was factored into zeros which happened to be for an even filter / linear phase ... so the zeros were arranged in quads around the unit circle. Next, to get rid of the symmetry, threw out inside-the circle or outside-the circle matching pairs of zeros in all combinations possible - reducing the order of the filter by 2. Once these combinations were determined, re-formed the expressions yielding the filter coefficients. Then, picked the filter that most closely matched the coefficient magnitude criterion - by finding the coefficient set with the smallest "error". Once you have the set with the smallest error then you could quantize to +1/-1.... But, I'm sure someone will have an analytic solution for this. I would probably ask Robert Israel at U of British Columbia. He helped me with the analytic part where this one begins. That was a very big help! Check sci.math. Fred
Reply by move November 4, 20082008-11-04
On Nov 3, 11:08&#4294967295;pm, "DSP_student" <sz...@t2.technion.ac.il> wrote:
> Hello everyone, > > I would like to know whether it's possible to find a sequence of FIR > coefficients of even length such that each coefficient can be 1 out of 5 > possibilities: 1, -1, 0, j, -j. I'm trying to create a Band-Stop filter > using a sequence of coefficients like this. > > The literature is packed with all sorts of low-correlation sequences, and > some of them (like legendre sequences) possess a DC notch. This is good, > but i'm looking for the ability to create notches at each one of the > frequency samples, not just the DC. > > Can anyone help me with relevant information? > > Thank you in advance, > Dan
sounds Very interesting, implement such a filter in FPGA would require no multiplexers. traditional pm design based their coeff on real numbers only , well this method is equivalent construct coeffs on exp^(j\theta), might result in reasonable filter length.
Reply by Jerry Avins November 3, 20082008-11-03
Randy Yates wrote:
> Jerry Avins <jya@ieee.org> writes: > >> Vladimir Vassilevsky wrote: >>> >>> Jerry Avins wrote: >>> >>>> Vladimir Vassilevsky wrote: >>>> >>>>> robert bristow-johnson wrote: >>>>> >>>>>> On Nov 3, 10:57 am, Vladimir Vassilevsky <antispam_bo...@hotmail.com> >>>>>> wrote: >>>>>> >>>>>>>>> You can build any kind of filter using just +/-1, +/-j and 0 as the >>>>>>>>> coefficients. >>>>>>> >>>>>> so you take your real input from your real A/D converter and put it >>>>>> into the real part of a complex array with the imaginary part set to >>>>>> zero. so you multiply by j and the result is imaginary. what do you >>>>>> do with it? >>>>> >>>>> I can do Hilbert over the imaginary part at the output to get back >>>>> to the real numbers. >>>> What coefficients do you use in your HT? >>>> >>> For that matter, HT can be done with +/- 1 and 0 as well. >> That's a new one for me. How? > > I believe his point is that no one said how _good_ the filter would be.
AH! {1 -1} or {1 0 -1} can be an HT, even though the the frequency response suffers a bit. Of course! Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Reply by Glen Herrmannsfeldt November 3, 20082008-11-03
robert bristow-johnson wrote:
(snip, someone wrote)

>>>>>>>>>>You can build any kind of filter using >>>>>>>>>> just +/-1, +/-j and 0 as the coefficients.
I might believe that, but the length might get longer for some filters. Much longer than with more general coefficients.
>>>>>>>so you take your real input from your real A/D converter and put it >>>>>>>into the real part of a complex array with the imaginary part set to >>>>>>>zero. so you multiply by j and the result is imaginary. what do you >>>>>>>do with it?
I believe you can take real data at sampling rate F, and convert to complex data at F/2.
> which is, by other means, effectively implementing coefficients that > aren't just +/-1 or 0. since the coefs are constant, you can express > each as the sum of powers of two and every time some bit in the coef > is "1", there's a path to some big-ass adder and when the bit is a > "0". if you have have enough adders, you don't need to multiply > anywhere.
It seems to me that working with complex data and {1, -1, j, -j, 0} is about as easy as doing it at twice the sample rate with only {1, -1, 0}.
> i still wonder about the +j and -j coefficients. i've gotten into a > couple of fights about whether "imaginary" and "real" are appropriate > names for those two components of a complex number (i argue that they > are). ultimately, every physical quantity that we measure is real, > even if we have underlying equations describing a physical process > that has complex functions in it (like Schrodinger), the signals we do > DSP on come from real measurements. now it's fine to do things like > compute the (delayed) Hilbert Transform of some input signal and > couple that with the (equally delayed) input signal. that's fine and > then you can treat that pair of real signals as a complex signal > inside the mind of the DSP (and then you no longer have that even real- > part and odd imag-part symmetry, what is that called?). but, in the > last analysis, you can describe every complex operation in terms of > real operations.
It does seem to make quantum mechanics easier, but then that might be because they use the Fourier transform. If you use a different transform, you would have different basis functions. -- glen
Reply by robert bristow-johnson November 3, 20082008-11-03
On Nov 3, 2:31&#4294967295;pm, Vladimir Vassilevsky <antispam_bo...@hotmail.com>
wrote:
> Jerry Avins wrote: > > Vladimir Vassilevsky wrote: > > >> Jerry Avins wrote: > > >>> Vladimir Vassilevsky wrote: > > >>>> robert bristow-johnson wrote: > > >>>>> On Nov 3, 10:57 am, Vladimir Vassilevsky <antispam_bo...@hotmail.com> > >>>>> wrote: > > >>>>>>>> You can build any kind of filter using just +/-1, +/-j and 0 as the > >>>>>>>> coefficients. > > >>>>> so you take your real input from your real A/D converter and put it > >>>>> into the real part of a complex array with the imaginary part set to > >>>>> zero. &#4294967295;so you multiply by j and the result is imaginary. &#4294967295;what do you > >>>>> do with it? > > >>>> I can do Hilbert over the imaginary part at the output to get back > >>>> to the real numbers. > > >>> What coefficients do you use in your HT? > > >> For that matter, HT can be done with +/- 1 and 0 as well. > > > That's a new one for me. How? > > By parallel or series combining of the +/-1 or 0 filters you can have > any response you like. >
which is, by other means, effectively implementing coefficients that aren't just +/-1 or 0. since the coefs are constant, you can express each as the sum of powers of two and every time some bit in the coef is "1", there's a path to some big-ass adder and when the bit is a "0". if you have have enough adders, you don't need to multiply anywhere. i still wonder about the +j and -j coefficients. i've gotten into a couple of fights about whether "imaginary" and "real" are appropriate names for those two components of a complex number (i argue that they are). ultimately, every physical quantity that we measure is real, even if we have underlying equations describing a physical process that has complex functions in it (like Schrodinger), the signals we do DSP on come from real measurements. now it's fine to do things like compute the (delayed) Hilbert Transform of some input signal and couple that with the (equally delayed) input signal. that's fine and then you can treat that pair of real signals as a complex signal inside the mind of the DSP (and then you no longer have that even real- part and odd imag-part symmetry, what is that called?). but, in the last analysis, you can describe every complex operation in terms of real operations. hopefully, when you're done, either the imaginary part is virtually zero or the design of your algorithm outputs some real function (Re(.), Im(.), |.|, |.|^2, arg(.)) of your result. but, without defining the algorithm as such, i also find it a curious and not- easily-answered question of what it means for an FIR coefficient to have an non-zero imaginary part. r b-j
Reply by Vladimir Vassilevsky November 3, 20082008-11-03

Jerry Avins wrote:

> Vladimir Vassilevsky wrote: > >> Jerry Avins wrote: >> >>> Vladimir Vassilevsky wrote: >>> >>>> robert bristow-johnson wrote: >>>> >>>>> On Nov 3, 10:57 am, Vladimir Vassilevsky <antispam_bo...@hotmail.com> >>>>> wrote: >>>>> >>>>>>>> You can build any kind of filter using just +/-1, +/-j and 0 as the >>>>>>>> coefficients. >>>>>> >>>>>> >>>>>> >>>>> >>>>> so you take your real input from your real A/D converter and put it >>>>> into the real part of a complex array with the imaginary part set to >>>>> zero. so you multiply by j and the result is imaginary. what do you >>>>> do with it? >>>> >>>> >>>> >>>> I can do Hilbert over the imaginary part at the output to get back >>>> to the real numbers. >>> >>> >>> What coefficients do you use in your HT? >>> >> For that matter, HT can be done with +/- 1 and 0 as well. > > That's a new one for me. How? >
By parallel or series combining of the +/-1 or 0 filters you can have any response you like. VLV
Reply by Randy Yates November 3, 20082008-11-03
Jerry Avins <jya@ieee.org> writes:

> Vladimir Vassilevsky wrote: >> >> >> Jerry Avins wrote: >> >>> Vladimir Vassilevsky wrote: >>> >>>> robert bristow-johnson wrote: >>>> >>>>> On Nov 3, 10:57 am, Vladimir Vassilevsky <antispam_bo...@hotmail.com> >>>>> wrote: >>>>> >>>>>>>> You can build any kind of filter using just +/-1, +/-j and 0 as the >>>>>>>> coefficients. >>>>>> >>>>>> >>>>> >>>>> so you take your real input from your real A/D converter and put it >>>>> into the real part of a complex array with the imaginary part set to >>>>> zero. so you multiply by j and the result is imaginary. what do you >>>>> do with it? >>>> >>>> >>>> I can do Hilbert over the imaginary part at the output to get back >>>> to the real numbers. >>> >>> What coefficients do you use in your HT? >>> >> >> For that matter, HT can be done with +/- 1 and 0 as well. > > That's a new one for me. How?
I believe his point is that no one said how _good_ the filter would be. -- % Randy Yates % "Watching all the days go by... %% Fuquay-Varina, NC % Who are you and who am I?" %%% 919-577-9882 % 'Mission (A World Record)', %%%% <yates@ieee.org> % *A New World Record*, ELO http://www.digitalsignallabs.com
Reply by Jerry Avins November 3, 20082008-11-03
Vladimir Vassilevsky wrote:
> > > Jerry Avins wrote: > >> Vladimir Vassilevsky wrote: >> >>> robert bristow-johnson wrote: >>> >>>> On Nov 3, 10:57 am, Vladimir Vassilevsky <antispam_bo...@hotmail.com> >>>> wrote: >>>> >>>>>>> You can build any kind of filter using just +/-1, +/-j and 0 as the >>>>>>> coefficients. >>>>> >>>>> >>>> >>>> so you take your real input from your real A/D converter and put it >>>> into the real part of a complex array with the imaginary part set to >>>> zero. so you multiply by j and the result is imaginary. what do you >>>> do with it? >>> >>> >>> I can do Hilbert over the imaginary part at the output to get back to >>> the real numbers. >> >> What coefficients do you use in your HT? >> > > For that matter, HT can be done with +/- 1 and 0 as well.
That's a new one for me. How? Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Reply by Vladimir Vassilevsky November 3, 20082008-11-03

Jerry Avins wrote:

> Vladimir Vassilevsky wrote: > >> robert bristow-johnson wrote: >> >>> On Nov 3, 10:57 am, Vladimir Vassilevsky <antispam_bo...@hotmail.com> >>> wrote: >>> >>>>>> You can build any kind of filter using just +/-1, +/-j and 0 as the >>>>>> coefficients. >>>> >>>> >>> >>> so you take your real input from your real A/D converter and put it >>> into the real part of a complex array with the imaginary part set to >>> zero. so you multiply by j and the result is imaginary. what do you >>> do with it? >> >> >> I can do Hilbert over the imaginary part at the output to get back to >> the real numbers. > > What coefficients do you use in your HT? >
For that matter, HT can be done with +/- 1 and 0 as well. VLV