As examples the guided tutorials are really the go-to place. Doing
energy detection is pretty straightforward, as mentioned in the quoted
stackoverflow answer:  simply calculate some kind of instantaneous
energy of your samples stream, which in the simplest case really is just
applying the "complex to Mag^2".

Best regards,
Marcus

On 25.11.2015 17:43, Yan Huang wrote:
>
> Hi Marcus,
>
>  
>
> Actually, I need to do the spectrum management and interference
> identification using GNU radio and USRP, and I’ve read some articles
> about them, but I still don’t know how to realize them, so I want to
> find some examples about this area. Unfortunately, I first find was an
> energy detector to create an Out-Of-Tree module by C++.
>
>  
>
> Could you recommend some examples that I can follow?
>
>  
>
> Thank you,
>
> Yan
>
>  
>
> *From:*Marcus Müller [mailto:[email protected]]
> *Sent:* 25 November 2015 16:05
> *To:* Yan Huang; GNURadio Discussion List
> *Subject:* Re: [Discuss-gnuradio] error while making detector
>
>  
>
> Hi Yan,
>
>
> If I want to add more functions can I add them to existing blocks?
>
> You could do that; often, functionality is cleaner implemented by
> adding further blocks, but if you need something that needs a modified
> block, creating your own might really be the best way. I'd really
> recommend doing that in python for a start, though.
>
> I really just was recommending using existing blocks because I felt
> that getting C++ problems right at the beginning might have been
> frustrating; the usual way we try to introduce new people to GNU Radio
> development really is taking the road from the GNU Radio companion,
> combining existing blocks, over gr_modtool to create an Out-Of-Tree
> module for python blocks to C++ blocks in that same gr_modtool created
> module. Now, gr_modtool usually creates block "stubs" that just work,
> and all the errors you were getting were indicative of you not
> including the right headers and maybe not linking against GSL.
>
> Also, the code line the compiler output showed contained a lot of bugs
> (mainly integer division where you'd want to have proper float
> division, and a lot of basic syntax errors), so to be honest: you
> should not start with writing a C++ block before you're really
> somewhat used to writing C++ code. Python blocks /are/ slower than C++
> blocks in many cases, but the speed up might not really worth the
> labour here, until you have tried and figured out which actually
> become problematic (and if the reduced computational performance is a
> problem at all). Python is super easy to learn if you've ever saw any
> imperative programming language, be that matlab, ruby, PHP, or
> anything else.
>
> So: I don't really know what your energy detector should do, or what
> your current implementation's purpose is exactly, so I'm not really
> fit to say "that can be solved with existing blocks only", but energy
> detection is a very common problem, and hence, chances are that most
> of the functionality can be done by existing blocks. You seem to be
> using a rather fair amount of linear algebra in your block, judging by
> the amount of GSL calls you do.
>
> Maybe you'd want to describe your problem, so that the mailing list
> (hint: try to reply to the mailing list instead of individuals; then
> more people can be helpful; and also, that's proper mailing list
> etiquette) can come up with a suitable approach.
>
> Best regards,
> Marcus
>
> On 25.11.2015 16:45, Yan Huang wrote:
>
>     Thank you very much, I guess I’d better use the existing blocks to
>     implement energy detection. If I want to add more functions can I
>     add them to existing blocks?
>
>      
>
>     Thank you,
>
>     Yan
>
>     *From:*Marcus Müller [mailto:[email protected]]
>     *Sent:* 25 November 2015 15:23
>     *To:* Yan Huang; GNURadio Discussion List
>     *Subject:* Re: [Discuss-gnuradio] error while making detector
>
>      
>
>     There's already blocks that do energy calculation, so you really
>     don't have to implement this yourself.
>     In fact, I wrote a short answer on a similar question just
>     yesterday. The question there was how to add a method
>     "get_bandpower" to a C++ block, so here's the excerpt from
>     http://stackoverflow.com/a/33901845/4433386
>     where I explained other ways than implementing this yourself:
>
>
>
>     Other than that, there's already blocks that can do what you want:
>
>     three ways to probe signal <http://i.stack.imgur.com/jdwd6.png>
>
>       * *Probe Avg Mag²*: has a method |level()| which does the same
>         as your |get_bandpower| (aside from the √(.) )
>       * *Complex to Mag* ⟶ *Decimating FIR Filter* ⟶ *Probe Signal*:
>         does the √(Re²+Im²), before passing it on to a filter with 123
>         (that was just my arbitrary fixed length) taps of 1/length,
>         and decimating it to one value every average. Result get send
>         to the Signal Probe, which has a |signal()| method, which does
>         what your |get_bandpower| does. CPU load of this is relatively
>         small -- it's really just the magnitude finding for every
>         sample, and then 123 real multiplications + 123 real additions
>         per 123 samples,in the filter, all SIMD increased, so
>         basically, less than 1 FMAC per sample.
>       * *Complex to Mag* ⟶ *Moving Average* ⟶ *Probe Signal*: Names
>         say it all. Nothing magical here.
>
>
>     Best regards,
>     Marcus
>
>     On 25.11.2015 16:19, Yan Huang wrote:
>
>         Hi Marcus,
>
>          
>
>         I have followed the URL you recommended, but  I want to use
>         gnuradio to do energy detection , so I follow the howto
>         infrastructure and want to learn more about  it by building a
>         new block. Is there any suggestion about how to make anergy
>         detection?
>
>          
>
>         Thanks,
>
>          
>
>         Yan
>
>          
>
>         *From:*[email protected]
>         <mailto:[email protected]>
>         [mailto:[email protected]]
>         *On Behalf Of *Marcus Müller
>         *Sent:* 25 November 2015 15:10
>         *To:* [email protected] <mailto:[email protected]>
>         *Subject:* Re: [Discuss-gnuradio] error while making detector
>
>          
>
>         Hi Yan,
>
>         which tutorial exactly where you following (URL)?
>         I recommend using the Guided Tutorials for beginners; they are
>         much better illustrated, and they don't need the sometimes
>         broken howto infrastructure.
>         https://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorials
>
>         Best regards,
>         Marcus
>
>         On 25.11.2015 15:45, Yan Huang wrote:
>
>             Hey,
>
>             I’m a new to use gnuradio and USRP B210, now I want to
>             generate my OOT module start with the example
>             ‘howto_detect’, and I followed guided tutorial in
>             gnuradio.org. But there are still some problems as follows.
>
>              
>
>             [  6%] Building CXX object
>             lib/CMakeFiles/gnuradio-howto.dir/howto_detect_ff_impl.cc.o
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:32:5:
>             error: prototype for ‘gr::howto::howto_detect_ff::sptr
>             gr::howto::howto_detect_ff::make(float, int, int)’ does
>             not match any in class ‘gr::howto::howto_detect_ff’
>                  howto_detect_ff::make(float pfa, int L, int samples)
>                  ^
>             In file included from
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.h:24:0,
>                              from
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:26:
>             
> /home/mint/Documents/gr-howto/include/howto/howto_detect_ff.h:49:19:
>             error: candidate is: static
>             gr::howto::howto_detect_ff::sptr
>             gr::howto::howto_detect_ff::make()
>                    static sptr make();
>                                ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:
>             In constructor
>             ‘gr::howto::howto_detect_ff_impl::howto_detect_ff_impl(float,
>             int, int)’:
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:52:24:
>             error: expression cannot be used as a function
>                            d_pfa(pfa), d_L(L), d_samples(samples))
>                                     ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:52:32:
>             error: expression cannot be used as a function
>                            d_pfa(pfa), d_L(L), d_samples(samples))
>                                             ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:52:52:
>             error: expression cannot be used as a function
>                            d_pfa(pfa), d_L(L), d_samples(samples))
>                                                                 ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:
>             In function ‘float gr::howto::TracyWidom(float)’:
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:71:46:
>             error: ‘printf’ was not declared in this scope
>              tw = 18*(pd - (17/75)); printf("a - %f\n", tw);
>                                                           ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:73:47:
>             error: ‘printf’ was not declared in this scope
>              tw = 8*(pd - (179/400)); printf("b - %f\n", tw);
>                                                            ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:75:53:
>             error: ‘printf’ was not declared in this scope
>              tw = (87/20)*(pd - (643/870)); printf("c - %f\n", tw);
>                                                                  ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:77:52:
>             error: ‘printf’ was not declared in this scope
>              tw = (16/5)*(pd - (287/320)); printf("d - %f\n", tw);
>                                                                 ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:79:52:
>             error: ‘printf’ was not declared in this scope
>              tw = (17/5)*(pd - (297/340)); printf("e - %f\n", tw);
>                                                                 ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:81:49:
>             error: ‘printf’ was not declared in this scope
>              tw = (5.2)*(pd - (0.813)); printf("f - %f\n", tw);
>                                                              ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:83:53:
>             error: ‘printf’ was not declared in this scope
>              tw = (53/5)*(pd - (909/1060)); printf("g - %f\n", tw);
>                                                                  ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:85:48:
>             error: ‘printf’ was not declared in this scope
>              tw = 26*(pd - (593/650)); printf("h - %f\n", tw);
>                                                             ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:87:56:
>             error: ‘printf’ was not declared in this scope
>              printf ("wrong pfa value: it must be between 0 and 1\n");
>                                                                     ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:
>             In member function ‘virtual int
>             gr::howto::howto_detect_ff_impl::general_work(int,
>             gr_vector_int&, gr_vector_const_void_star&,
>             gr_vector_void_star&)’:
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:141:9:
>             error: ‘gsl_matrix’ was not declared in this scope
>                      gsl_matrix * hankel = gsl_matrix_alloc (lenght,d_L);
>                      ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:141:22:
>             error: ‘hankel’ was not declared in this scope
>                      gsl_matrix * hankel = gsl_matrix_alloc (lenght,d_L);
>                                   ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:141:59:
>             error: ‘gsl_matrix_alloc’ was not declared in this scope
>                      gsl_matrix * hankel = gsl_matrix_alloc (lenght,d_L);
>                                                                        ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:142:22:
>             error: ‘V’ was not declared in this scope
>                      gsl_matrix * V = gsl_matrix_alloc (d_L,d_L);
>                                   ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:143:9:
>             error: ‘gsl_vector’ was not declared in this scope
>                      gsl_vector * S = gsl_vector_alloc (d_L);
>                      ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:143:22:
>             error: ‘S’ was not declared in this scope
>                      gsl_vector * S = gsl_vector_alloc (d_L);
>                                   ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:143:47:
>             error: ‘gsl_vector_alloc’ was not declared in this scope
>                      gsl_vector * S = gsl_vector_alloc (d_L);
>                                                            ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:144:22:
>             error: ‘temp’ was not declared in this scope
>                      gsl_vector * temp = gsl_vector_alloc (d_ L);
>                                   ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:144:47:
>             error: ‘d_’ was not declared in this scope
>                      gsl_vector * temp = gsl_vector_alloc (d_ L);
>                                                            ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:147:36:
>             error: ‘gsl_matrix_set_zero’ was not declared in this scope
>                      gsl_matrix_set_zero (hankel);
>                                                 ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:156:47:
>             error: ‘fopen’ was not declared in this scope
>                          story = fopen("filestory.txt", "a");
>                                                            ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:159:60:
>             error: ‘gsl_matrix_set’ was not declared in this scope
>                                  gsl_matrix_set (hankel, p, j, vett[p+j]);
>                                                                         ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:162:57:
>             error: ‘gsl_linalg_SV_decomp’ was not declared in this scope
>                              gsl_linalg_SV_decomp (hankel, V, S, temp);
>                                                                      ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:163:43:
>             error: ‘gsl_vector_get’ was not declared in this scope
>                              lmax = gsl_vector_get(S, 0);
>                                                        ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:167:79:
>             error: ‘fprintf’ was not declared in this scope
>                              fprintf(story, "%f - ratio=%f -
>             soglia=%f\n ", mem, ratio, thr);
>                                                                               
>             
>             ^
>             /home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:168:29:
>             error: ‘fclose’ was not declared in this scope
>                              fclose(story);
>                                          ^
>             make[2]: ***
>             [lib/CMakeFiles/gnuradio-howto.dir/howto_detect_ff_impl.cc.o]
>             Error 1
>             make[1]: *** [lib/CMakeFiles/gnuradio-howto.dir/all] Error 2
>             make: *** [all] Error 2
>
>              
>
>             Any solution to sort an error will be appreciated.
>
>              
>
>             Thanks a lot,
>
>              
>
>             Yan
>
>              
>
>              
>
>              
>
>             This message and any attachment are intended solely for the 
> addressee
>
>             and may contain confidential information. If you have received 
> this
>
>             message in error, please send it back to me, and immediately 
> delete it. 
>
>              
>
>             Please do not use, copy or disclose the information contained in 
> this
>
>             message or in any attachment.  Any views or opinions expressed by 
> the
>
>             author of this email do not necessarily reflect the views of the
>
>             University of Nottingham.
>
>              
>
>             This message has been checked for viruses but the contents of an
>
>             attachment may still contain software viruses which could damage 
> your
>
>             computer system, you are advised to perform your own checks. Email
>
>             communications with the University of Nottingham may be monitored 
> as
>
>             permitted by UK legislation.
>
>
>
>
>
>
>             _______________________________________________
>
>             Discuss-gnuradio mailing list
>
>             [email protected] <mailto:[email protected]>
>
>             https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>          
>
>          
>
>          
>
>         This message and any attachment are intended solely for the addressee
>
>         and may contain confidential information. If you have received this
>
>         message in error, please send it back to me, and immediately delete 
> it. 
>
>          
>
>         Please do not use, copy or disclose the information contained in this
>
>         message or in any attachment.  Any views or opinions expressed by the
>
>         author of this email do not necessarily reflect the views of the
>
>         University of Nottingham.
>
>          
>
>         This message has been checked for viruses but the contents of an
>
>         attachment may still contain software viruses which could damage your
>
>         computer system, you are advised to perform your own checks. Email
>
>         communications with the University of Nottingham may be monitored as
>
>         permitted by UK legislation.
>
>      
>
>      
>
>      
>
>     This message and any attachment are intended solely for the addressee
>
>     and may contain confidential information. If you have received this
>
>     message in error, please send it back to me, and immediately delete it. 
>
>      
>
>     Please do not use, copy or disclose the information contained in this
>
>     message or in any attachment.  Any views or opinions expressed by the
>
>     author of this email do not necessarily reflect the views of the
>
>     University of Nottingham.
>
>      
>
>     This message has been checked for viruses but the contents of an
>
>     attachment may still contain software viruses which could damage your
>
>     computer system, you are advised to perform your own checks. Email
>
>     communications with the University of Nottingham may be monitored as
>
>     permitted by UK legislation.
>
>  
>
>
> This message and any attachment are intended solely for the addressee
> and may contain confidential information. If you have received this
> message in error, please send it back to me, and immediately delete it. 
>
> Please do not use, copy or disclose the information contained in this
> message or in any attachment.  Any views or opinions expressed by the
> author of this email do not necessarily reflect the views of the
> University of Nottingham.
>
> This message has been checked for viruses but the contents of an
> attachment may still contain software viruses which could damage your
> computer system, you are advised to perform your own checks. Email
> communications with the University of Nottingham may be monitored as
> permitted by UK legislation.

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to