Data Sonification via IFFT
8 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2011-9-22
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 个评论
Walter Roberson
2011-9-27
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.
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!