Hello Rob,
sorry for answering late. Somehow I did not see the notification.
The signal comes from audio recordings of very different length and sample
rate. I am not really sure whether this very simple way of fingerpinting
works at the end or I need a sliding window over time at the end which
would also result in a fixed resolution. As this would increase the amount
of data and complicate the further prpcessing, I first chose the other way
un the hope the result is good enough.
At tje end the data shall pre-train an adaptive notch filter to remove
(changing) background noise. The filter will run on an low power embedded
system.
So far this is just a vague idea. I had several applications in the past
where I would have required the solution, outside of audio.

Robb Brown <robb.br...@gmail.com> schrieb am Mo., 27. März 2017 23:50:

> This seems like a very odd thing to be doing.  Downsampling the frequency
> spectrum is (in the ideal case) equivalent to decreasing the field of view
> of the FFT on the original signal.  Why don't you just decrease the size of
> your original FFT?  That will make the FFT faster, and make your
> downsampling operation unnecessary.
>
>
> On Monday, March 27, 2017 at 12:26:37 PM UTC-4, Torsten Knodt wrote:
>
> Hello,
> I am totally new to theano and have a first implementation to reduce the
> resolution of the frequency axis of FFT data. My function basically sums
> multiple consecutive bins to one, but also handles cases where the target
> resolution is no integer multiple of the source resolution.
> from math import log2
> from numpy import array,arange,asarray,ceil,clip,empty,floor,trunc,
> frombuffer,save
> from theano import shared,function
> from theano.tensor import matrix,scalar,vector
>
> def resample(self, input_data, fsi, fso, fdo):
>   fsi = float(fsi)
>   fdi = fsi/len(input_data)
>   output_data = empty(shape=int(ceil(fso/fdo)))
>   for o in range(len(output_data)):
>     fmino = o*fdo
>     fnexto = (o+1)*fdo
>     _v = vector()
>     _i = scalar(dtype='int64')
>     _fdi = scalar()
>     _fmino = scalar()
>     _fnexto = scalar()
>     _f1 = function([_i,_fdi,_fmino,_fnexto,_v],(((_i+1)*_fdi).clip(_fmino,
> _fnexto)-(_i*_fdi).clip(_fmino,_fnexto))/_fdi*_v[_i])
>     output_data[o] = sum([_f1(i,fdi,fmino,fnexto,input_data) for i in
> range(int(clip(floor(fmino/fdi),0,len(input_data)-1)),int(clip(ceil(fnexto
> /fdi), 1, len(input_data))))])
>   output_data = output_data / output_data.sum()
>   return output_data
>
> The background is, that I need fixed size FFT data to train a neuronal
> network which shall do some classification of the input.
> What would be your recommendations to improve the performance of the
> function? Improvements to efficiently handle multiple datasets of different
> source frequency resolutions would be of special interest. Currently I only
> work on my CPU, but plan to move to GPU later.
> input_data is already a numpy array. fsi specifies the maximum input
> frequency, while fso specifies the maximum output frequency. fdo specifies
> the requested resolution of the output.
>
> Thanks in Advance
>      Torsten Knodt
>
> --
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "theano-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/theano-users/cmJB8_0HB-k/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> theano-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"theano-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to theano-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to