Data Sonification via IFFT
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, I'm trying to sonify a non audio histogram data (financial data), for an arts project. I am using sound=ifft(histogram) but the sounds I get all start very loud then drop exponentially, and then at the end rise sharply again, sounding very much like a "ding-woop". I understand the sound symmetry being expected as DFT being conjugate symmetric, and also the fact that IFFT just converts from the frequency domain to time domain. What I don't understand is what are the general properties of the histogram that give such sounds, and how I can condition/change the histogram so it will give me more uniform sounds. I've tried sound=ifft(exp(histogram)) but didn't improve much. Many thanks for your help...
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 22 Sep. 2011
What you describe reminds me of something I encountered a few days ago: if you start with a linear slope and fft() it, and look at the real component (or, alternate, at the magnitude) of that, then it has a very sharp exponential at one end, becomes "nearly flat", and then at the end goes in to a sharp exponential again. For a simple slope, one of the exponentials will be negative and the other will be positive (the positions would flip around if you reversed the slope.)
My experiences thus suggests that if your histogram had something that approximated straight lines, then the ifft() would end up with the kind of exponentials you heard.
You can always plot the values to see. Keep in mind that the ifft() of arbitrary real data tends to end up as complex, so you will want to look at real() and imag() and abs() of the ifft.
4 Kommentare
Walter Roberson
am 27 Sep. 2011
A staircase with a number of steps is a straight line when viewed from further away.
I suspect you want to be working with the transform of fftshift() of the data.
The transform of a rectangular pulse (such as the bar from a histogram) is a sinc pulse; since is sin(Pi*x)/(Pi*x); see http://en.wikipedia.org/wiki/Sinc_function . The transform of the sum of several rectangular pulses is thus the multiplication of several sinc pulses. If all of the rectangular pulses are positive then all of the sinc pulses will peak on the positive side, so multiplying those sinc together will tend to produce something that approximates a larger sinc function -- i.e., that tends to approximate what you saw. fftshift() your output to see the sinc pulse.
Thus, if you are working with data that is more or less a series of rectangular pulses, or more or less a straight line, you will end up with the output shape you have already observed -- probably not of particular interest.
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!