<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <tt>The nice thing about an IQ stream is that it's already a complex
      (analytic) function.  When you have only a single stream of
      samples,</tt> like right out of an ADC, then you might need the
    Hilbert transform.<br>
    <br>
    Usually, at least when digitizing the RF from an antenna, there are
    thousands of signals.  You'll want to be selective.  Apply a
    band-pass filter, and do a digital down-conversion by multiplying by
    sin & cos of a digital LO.  This brings the selected signal down
    to baseband.  Since the bandwidth has been limited by the filter,
    you have many more samples than you need, so you can decimate, just
    tossing out all but every Nth sample.  At this point you might have
    an audio signal you can listen to.<br>
    <br>
    Dave<br>
    WA8YWQ<br>
    <br>
    On 6/22/2012 7:24 PM, Erik Anderson wrote:
    <blockquote
cite="mid:CAAeZAZ5EdxELJB_V+8vPsQHcak3V2+dQ1q4WTdfzjqVEdTt6bg@mail.gmail.com"
      type="cite">
      <pre wrap="">***** High Performance Software Defined Radio Discussion List *****

</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      I think I've reached the point in my little
      programming exercise where I'm getting a really fast IQ stream
      flying at me that likely contains interesting radio data.  So now
      I'm trying to figure out what to do with it.  And of course I'm
      doing the stupid thing and trying to wade out and figure things
      out on my own and realizing that this isn't as easy as calling up
      your local FFT library and throwing everything at it to fix for
      you.
      <div>
        <br>
      </div>
      <div>I'm still learning all the terms here and not quite ready to
        read the math yet, would like someone more intelligent than
        me (I'm sure this reflector has plenty) to say whether I'm going
        in the right direction with this.  Goal: transform an IQ stream
        into an audio stream.</div>
      <div><br>
      </div>
      <div>(*) Apply a Hilbert transform, selecting either USB or LSB</div>
      <div>- every example describes passing Hilbert a real stream ("use
        it to convert your signal from real to complex"), I'm thinking
        for my use case it can take a complex stream as well.  In the
        end I want an analytical stream (i.e. discard one sideband).</div>
      <div>- comes in two approximations: convolution and FIR.  I
        haven't found documentation on convolution yet (still reading).
         Different workarounds/limitations for each ("<span
style="background-color:rgb(255,255,255);font-family:sans-serif;font-size:10px;line-height:14px">Failure
          to appreciate or correctly apply these concepts is probably
          one of the most common mistakes made by non-experts")</span>.
         Filter may need to keep history and/or delay the signal
        (hopefully not by half a sample).</div>
      <div>- if using FIR, half the multiplications required by the
        implementation may drop out with the following step.</div>
      <div><br>
      </div>
      <div>(*) Forget the imaginary (quadrature) stream and force real</div>
      <div>- Assuming the signal is either analytic or mirrored, this is
        a safe operation.</div>
      <div>- Causes an immediate fold over the zero frequency line.</div>
      <div>- Do I need to follow this by multiplying the output by 2?
         Does the fold cause the power to be cut in half?  It feels like
        it wouldn't if the initial signal is real, so this is likely
        "no".</div>
      <div><br>
      </div>
      <div>(*) Apply a low-pass audio filter</div>
      <div>- Doing this as a real stream uses less math, is there a
        benefit to doing this earlier when the stream is complex?</div>
      <div><br>
      </div>
      <div>(*) Decimate</div>
      <div>- I'm guessing this causes folding at the nyquist boundary,
        so don't decimate down to less than twice the cutoff frequency
        of the low-pass filter you applied.</div>
      <div><br>
      </div>
      <div>Was hoping this month to get something working by field day.
         Don't think that's gonna happen anymore (lol), but this is
        still fun.</div>
      <div><br>
      </div>
      <div>73s,  Erik KM2G</div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
HPSDR Discussion List
To post msg: <a class="moz-txt-link-abbreviated" href="mailto:hpsdr@openhpsdr.org">hpsdr@openhpsdr.org</a>
Subscription help: <a class="moz-txt-link-freetext" href="http://lists.openhpsdr.org/listinfo.cgi/hpsdr-openhpsdr.org">http://lists.openhpsdr.org/listinfo.cgi/hpsdr-openhpsdr.org</a>
HPSDR web page: <a class="moz-txt-link-freetext" href="http://openhpsdr.org">http://openhpsdr.org</a>
Archives: <a class="moz-txt-link-freetext" href="http://lists.openhpsdr.org/pipermail/hpsdr-openhpsdr.org/">http://lists.openhpsdr.org/pipermail/hpsdr-openhpsdr.org/</a></pre>
    </blockquote>
  </body>
</html>