Hello GNURadio Community, Please ignore the above problem, I figured it out.
George On Sun, Apr 17, 2022 at 5:16 PM George Edwards <gedwards....@gmail.com> wrote: > Dear Gnuradio Community, > > I am writing an OOT signal processing algorithm in C++ that requires both > fft and ifft. I use the Gnuradio C++ library to get the fft and ifft > functions. To confirm understanding of setting up these functions, I wrote > C++ OOT blocks for both fft and ifft blocks. I ran a complex sinusoid into > the fft block and fed its output to the ifft block to reverse the process. > In the GRC flowgraph, the time and frequency plots seem correct (the output > of the ifft shows the sinusoidal frequency it recovers is right on mark). > > For further validation, I decided to compare Gnuradio C++ fft computation > to that of Matlab. I created a Python QA file to Debug the fft block and > examine the fft computation. For the experiment, I fed 8 complex data > samples into the fft block to see how its fft computation compares to that > of Matlab. The OOT fft computation was not correct! Here is a snippet of my > C++ OOT code written to test the fft computation (below "in and out" points > to the addresses of Gnuradio input/out data variables). > > memcpy(d_fft.get_inputbuf(), in, sizerof(gr_complex)*d_fft_size); > d_fft.execute(); > memcpy(out, d_fft.get_output(), sizerof(gr_complex)*d_fft_size); > gr_complex c_data[8]; > for(int i = 0; i < 8; i++) { > c_data[i] = out[i]; > } > As can be seen in my code, I wrote the fft output into the array variable > c_data. c_data has 1+1j in c_data[0] and all the other elements of the > array have values 0+0j. The values are all wrong (not the same as Matlab). > So I am at a loss! > > I appreciate any suggestions? > > Thank you! > George >