How to use FFT without grc block

Hi all,

I know there is an FFT block in gnuradio 3.7.
I want to create a cc file and add some gnuradio classes there.
Can I use FFT without .grc file without using blocks, just as a c++
function?

Thanks!

with doxygen docs do you mean these:
http://gnuradio.org/doc/doxygen/classgr_1_1fft_1_1fft__complex.html ?
this redundant information is hopeless…

Do you know any normal good mature documentation?

Четверг, 23 января 2014, 20:57 +01:00 от Marcus Müller
[email protected]:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yes, you can. Look into the gr-fft module documentation in the doxygen
docs.
Alternatively, you can simply link against FFTW [1] yourself and use
the FFT algorithms; gr-fft is a wrapper for that functionality
offering simplification and ease of use. But if an FFT is all that
you’re after, going directly for FFTW might be the best choice; if you
need something non-standard such as 2D-FFT (or higher dimensions),
real-only transforms, sliced/strided, hundreds of transforms at
once… use FFTW. If you just want an N-Point FFT and are linking
against GR anyway, use gr-fft.

Greetings,
Marcus

[1] Fastest Fourier Transform in the West, http://www.fftw.org/

On 23.01.2014 20:17, Nasi wrote:

_______________________________________________ Discuss-gnuradio
mailing list [email protected]
Discuss-gnuradio Info Page

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJS4XQPAAoJEAFxB7BbsDrLyfEIAJLH45hnH5DpkMpU/bV4s3Pl
2IXkAzZYJ1+JzotL0s9I4FMoQiwWe3t1ICzcP7U1p/kcZbA4nXaZ+JnTdLrQLGTG
9+G7vWDsNYtsxmxzDScFPsxzathATbM5k0VDqXoDf1sPd1RMP0TyOZ0hl9E+tugK
HWvZcLjwEUdNoW/ZdHA8DVohXS05qF9doeF5vQI33ftUq9iWEaXCAYM3r/Vudbi0
OcwyloLhdaKw47qiclLvlKUfI8va8YbknSB0WU2laiIK59qsl/87bd6K01jfAyWf
QZgbYJ8SoRtr9to04iW4DUjaX59PESJhSZYnpf8ZEhXcKw8i+kM0c7lPC9mnCww=
=vK/B
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Nasi,
On 24.01.2014 02:45, Nasi wrote:

Thanks!

with doxygen docs do you mean these:
http://gnuradio.org/doc/doxygen/classgr_1_1fft_1_1fft__complex.html
?
Yes, basically that class. I was referring to the module as whole, and
was hoping you’d might take a look into the GR source to find out how
it works; really, no magic involved there :slight_smile: look into gr-fft/lib/fft.cc

this redundant information is hopeless…

Do you know any normal good mature documentation?
Well if you want to use gr-fft, you must me content with what you can
find in the doxygen, find when searching the mailing list and the
internet in general. This is open source, so when someone implemented
something and felt that it is documented well enough, they’d stop
writing documentation and continue on implementing cool stuff :slight_smile:
basically, the names of the methods fft_complex class seem to named
self-explanatory enough to me…

I do get the feeling you’re not really after the minimalist fft
wrapper classes that are available in gr-fft, but want some general
FFT routines. As explained in great length in my last email, look for
a general FFT library then, and FFTW is the library of choice and
well-documented.

Anyway, you should explain what you’re trying to do and maybe we can
help you :slight_smile:

Good morning!
Marcus

non-standard such as 2D-FFT (or higher dimensions), real-only

Discuss-gnuradio mailing list [email protected]
Discuss-gnuradio Info Page

_______________________________________________ Discuss-gnuradio
mailing list [email protected]
Discuss-gnuradio Info Page

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJS4ghsAAoJEAFxB7BbsDrL2DkH/ijaxBZWxt4gh790z6jc7o4I
63rgJa+J1N9uB78p7ZLuoPaFezmX69VOFLUaC0Az+Sg5hPdXwxE21qOzDNpc+XO2
tA6146LJRZXMjOcrPnkT+gVVxfhx2UklfYPPuxl+ttlAMnrgvh7kK6ZWX5Kzvli8
EhZWdRxl1k4fdxDkKPP8v6kN2pVydWvXpTLwln8FAjkSCsPKXnH7rxfNLJcQZ6vW
WDinaN5chPLYP8hRgTetvB3V06BeDdMB96Kx3n5rmUloOWlCUvLFQ/rLhTUJ84iH
5rjhtTMT/I/3KsmIxYUCUEFhg088p6qNzdmMPEaWL9n+EKxp/t/JuzzYckhIeBQ=
=5nqS
-----END PGP SIGNATURE-----

Check the FFTW documentation.

On 01/24/2014 02:45 AM, Nasi wrote:

Thanks!

with doxygen docs do you mean
these: http://gnuradio.org/doc/doxygen/classgr_1_1fft_1_1fft__complex.html ?
this redundant information is hopeless…

Do you know any normal good mature documentation?

Nasi,

part of learning GNU Radio is learning to read the documentation. You’re
pointing to a specific object deep inside the guts of GNU Radio. There
will be no beginner-level documentation for these kinds of objects,
probably ever. If you followed the docs through the navigation Modules
→ Fourier Analysis, you’d see three blocks available for FFTs. All they
do is calculate an FFT – there is not much to say here. The assumption
on this page is that you know how blocks work, and what an FFT is.

The page you pointed to is not redundant, whether or not it’s hopeless
is of course matter of debate. But it has all you need to calculate an
FFT: The object you need, the functions you need to call etc.
Here’s all you really need: “compute FFT. The input comes from inbuf,
the output is placed in outbuf.”

Martin

And the problem is in that input part. It is not clear what is inbuf…
I create gr_complex vector and want to input it into fft. It does not
work in any way. There are alot of questions are still open.

Coder is a good coder if his code is readable first. Anyone one can
design a confusing language.

Sent from Mail.Ru app for iOS

Freitag, 24. Januar 2014 13:59 +0100 from Martin B.
[email protected]:
On 01/24/2014 02:45 AM, Nasi wrote:

Thanks!

with doxygen docs do you mean
these: http://gnuradio.org/doc/doxygen/classgr_1_1fft_1_1fft__complex.html ?
this redundant information is hopeless…

Do you know any normal good mature documentation?

Nasi,

part of learning GNU Radio is learning to read the documentation. You’re
pointing to a specific object deep inside the guts of GNU Radio. There
will be no beginner-level documentation for these kinds of objects,
probably ever. If you followed the docs through the navigation Modules
→ Fourier Analysis, you’d see three blocks available for FFTs. All they
do is calculate an FFT – there is not much to say here. The assumption
on this page is that you know how blocks work, and what an FFT is.

The page you pointed to is not redundant, whether or not it’s hopeless
is of course matter of debate. But it has all you need to calculate an
FFT: The object you need, the functions you need to call etc.
Here’s all you really need: “compute FFT. The input comes from inbuf,
the output is placed in outbuf.”

Martin


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

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Nasi,

Inbuf is the input buffer. It is a C++ pointer to a gr_complex.
That is the place where you put your input. As is described on the
doxygen page.

It is assumed that when you try to use a C++ framework, you are able
to understand basic C++ concepts. Again, I’d strongly agree with
Martin: This is using internal functionality of GNU Radio. You must be
able to read the source code to effectively employ it.

Sincerely,
Marcus

On 24.01.2014 15:55, Nasi wrote:

Nasi,
The page you pointed to is not redundant, whether or not it’s
_______________________________________________ Discuss-gnuradio
mailing list [email protected]
Discuss-gnuradio Info Page

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJS4oB0AAoJEAFxB7BbsDrLEsAH/0UOFkBA20wzgzAOUIoZZr6J
HV3C4GGp8GigKV+U3aVm2vW/zZKsnpU/dyzstOnzN/PBYvYiMn8gARkMtIvo6i8h
+iKP8l8PUH9NOWe/yKLxMIr/DNfbITKR/sGQ3RX8Wihdm8xcOVmORIG1rTzBlTOu
sNa1/19KgLGxqHeb1cjGcXxSq9wJY7Dp+2XRjsaOaRtzh+uNzmaDdV7lvNCL3UDA
DStfOCu4BSTFoeB8JND1An1SF83LeF5ly4vv8HVezeyENh9Pqz1Ys/pabsjjq3LW
FXU2XDQcRrxH2CyfWzPUQwTpzWB+ziYucGH2eQGjxqTTVTWjtuxLEn9cbzteJL4=
=MKKi
-----END PGP SIGNATURE-----

Does the function referred to have the ability to read in a File Sink
binary file?

Paul B. Huter

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Paul,

no. It does an FFT and nothing else (aside offering to apply a
window); please read the doxygen or have a look at the code. Both is
extremely short and to the point :wink:

Anyway,
“file_sink binary files” are not something special. They just store
floating point values the same way they are stored in RAM.

Assuming you can use the FFTW, you can simply use the C standard lib’s
open() to open a file, and read() the desired amount of bytes (that
is, number of floats4 or number of complexes8) directly into the
buffer that you fftw_malloc’ed for usage in the fourier transform.

Hope that I could help you!

Marcus

On 24.01.2014 14:57, Paul B. Huter wrote:

http://gnuradio.org/doc/doxygen/classgr_1_1fft_1_1fft__complex.html

?

followed the docs through the navigation Modules → Fourier

mailing list [email protected]
Discuss-gnuradio Info Page

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJS4oXjAAoJEAFxB7BbsDrLT+UH/0dXb1mqAegyPyhjdXJn27rC
wO5VBX0n8qzAn4FJ1/5VWrZ8/pYmABI4nGqU1qkEyiCWyQm+VLaCTMH8vJnLVB+6
Nd8iB4YHOuIPn8xTZfFo5sgN26ft1XbtmbE8JQUWfnMdnSKOUQgss+MPff8rAr15
hPzd4xgJV6qr7DrHiZZjJ4rv5aVUR1BkBi3rfaAwXcvMj+5qR2iRHOSVA/o3oMFA
5BWihDNtiX2je9l9io2zQEy9uYMC8X11mQ2rt8fqkNiLRZk8mnzDEzL9ZSz+sWfZ
9L2vM6Y9ZeF6aqGHTIWRL1Cv1QnGTTLfKHnaufjWwP8nwFlwqABIXn0StNAsGKY=
=hF6R
-----END PGP SIGNATURE-----

Hi Nasi,

And the problem is in that input part. It is not clear what is inbuf…

I create gr_complex vector and want to input it into fft. It does not work
in any way. There are alot of questions are still open.

You can look at fft.cc and fft_vcc_fftw.cc. It is quite clear how the
FFTW
library is called by GNU Radio. The documentation of FFTW is also quite
good. You can look up how to use a “plan” to calculate forward/reverse
FFTs.

Coder is a good coder if his code is readable first. Anyone one can design
a confusing language.

With all due respect, Nasi, please refrain from biting the hand that
feeds,
and then asking for more.

Happy hacking!

best,
aditya

On 01/24/2014 09:55 AM, Nasi wrote:

Coder is a good coder if his code is readable first. Anyone one can design a
confusing language.
A programmers job in documentation isn’t to teach you the language the
code is written in. It is assumed that the reader knows the language
already.

Imagine that in spoken languages, we all had to include massive amounts
of clarifying sub-texts every time we spoke, because the other party may
not
be familiar at all with our spoken languages.

The www.gnuradio.org website has lots of overall architectural
information, I’d suggest you spend some time at it. The Doxygen docs
aren’t
intended to be tutorials. They are more like a “quick reference”
document that can help you with calling parameters, etc. But from your
questions,
I’m getting that you have only the vaguest notion of how Gnu Radio is
architected, and are confused as a result.


Marcus L.
Principal Investigator
Shirleys Bay Radio Astronomy Consortium

you guys do not get at all what is in there. You are just confronting
me, and accusing me not being an expert.
If I agree on not being an expert, will anyone here be happier?

FFTW documentation is not helpful, you guys have been working on this
for ages, now you can’t see the challenge in that.

Of course, I will write my code sooner or later, but you guys also can
do smt. to improve it.
For an near example, look at any any cc language documentation.

There is no book that written for an expert. The simpler is better in
writing.
Again, it is up to you, more people understand, more users will
implement your code. It is a kind of marketing.
Apart from all, I respect all what have done up to now.

Пятница, 24 января 2014, 10:03 -05:00 от Aditya D.
[email protected]:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Nasi,

this has totally gotten out of hand. Please stop.

We still have no idea of what you’re trying to do. We’d usually really
like to help you, but all help we offered so far was not really
welcomed by you at all.

FFTW documentation is not helpful, you guys have been working on
this for ages, now you can’t see the challenge in that.

Ok, as Martin and Aditya said, when you want to do an FFT in a C++
software of your own, we must expect you to both know how what an FFT
actually does and how to use buffers in C/C++.

As it seems again, you’re turning to us to help you in understanding
basic concepts that we, as a helping community, must assume you try to
work on yourself. If you’re having a minor problem with C++ in the
context of GR, just ask. If you have a question regarding the way GR
works that you can not solve by reading the obvious information
sources (that is, www.gnuradio.org), just ask.
If you can’t use the supplied functionality because you simply are not
yet good enough at C++, we can’t be the ones to teach you that. This
is discuss-gnuradio, not cplusplus-beginners-help.

Of course, I will write my code sooner or later, but you guys also
can do smt. to improve it.
Sorry, we’re not here to improve your code; especially not if you
haven’t even taken the effort to write it. We are here because we like
to help people use GNU Radio, but it ends at the point where we do
their work. In your case, that job is understanding how to use classes
that take pointers to input buffers, and to learn the basic principles
of operation of GNU Radio.

For an near example, look at any any cc language documentation.
This is totally out of scope of this mailing list, sorry. GNU Radio is
not about learning to program C++. Every line you write will of course
improve your programming skills. But using GNU Radio from C++ demands
for a solid knowledge of the programming language beforehand. And you
seem to lack that.

Again, it is up to you, more people understand, more users will
implement your code. It is a kind of marketing.

Again, the code you’re trying to use is not something that someone
else who is not already using GNU Radio would want to use. It is just
something you can use from within GNU Radio. Still, we assume that
to any feasibly interested outsider with a little background in C++,
the supplied doxygen is enough. Sorry.

You seem to be offended, and I hope that’s not the case. From my
perspective, a lot of people tried to be really helpful and show you
the things you need to learn until you can start to use the
functionality you want to have. We have invested a lot of time in it,
to help you for free with no personal benefit.
I will stop (and I presume the others do, too) to discuss this issue,
not because I don’t want to make it easy for you, but because I really
can’t simplify it (honestly, fft::fft_complex is one of the most easy
to understand classes), nor see any benefit in telling you again and
again that you need to learn C++ before you use C++ classes, need to
understand the concepts of a DFT before you use an FFT, and point you
to different helpful resources that you simply smite because they
can’t break the stuff down for your understanding.

Greetings,
Marcus
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJS4pvwAAoJEAFxB7BbsDrLqaMIAKAEkEPPLrVGoWPO1RiOl5Z2
8BDUfyD9/fCK8/kGWBOUhU2vFXTJwsYW3r96vx26izLNE4YjH+xit6LSFYz98Zld
zpYczT+WnjnE2WdRMsTgmvzgDI1+WGV5nr5OogkV6XXavGBMzRwCHiSJjmrHWub/
OCAXKfcqrovX/Mg3zOfnKgBsHu217AK1g08o8Zb6MCk+7iB9kfwetr6ohEeEmYYR
quyqcv6ZxN/p5CBqYg7SABOxw+aRRqh8RxqBEyWKNQ7GfCcECr1snahR9w/1/mXF
/zpqpSbqYdREMP7MNuT09umCiLHKCuKPNmeOeoqVcCusz27Yapr4QV7nqMvBEWI=
=c3Eo
-----END PGP SIGNATURE-----

On 01/24/2014 11:32 AM, Nasi wrote:

instead of helping, you like to embarrass me…
in my first email, I asked for a tutorial not a short reference.

Well, how about here:

http://gnuradio.org/doc/doxygen/

And here:

http://gnuradio.org/redmine/projects/gnuradio/wiki/HowToUse

And here:

http://gnuradio.org/redmine/projects/gnuradio/wiki/WhatIsGR

And here:

http://gnuradio.org/redmine/projects/gnuradio/wiki/TutorialsWritePythonApplications

And here:

http://gnuradio.org/redmine/projects/gnuradio/wiki/FAQ

And here: