<< Chapter < Page Chapter >> Page >

When implementing your spectrogram algorithm, make the following assumptions:

  • use a Hamming window
  • the window length is N=256
  • zero-pad by a factor of 2
  • do not overlap

Here are some things to keep in mind:

  • do not vectorize your code or use MATLAB-specific helper functions that are not available on the tablet (such as zeros() or norm() ), as you want to make porting it to C as straightforward as possible.
  • Retain only half of the FFT output, as it is conjugate symmetric (make sure you know why!)
  • If X = Xr + jXi is a complex number, the magnitude squared operation computes Xr^2 + Xi^2.
  • Because power can vary by orders of magnitude, the Log computation is used to reduce the dynamic range of the spectrogram output; this is useful when visualizing the data.

If your input signal is 8192 samples long, then your spectrogram output can be thought of as a 256 x 32 real-valued matrix. Make sure to understand why. You can then use the image() or imagesc() functions in MATLAB to visualize the data.

Part 4: a c implementation of the spectrogram


Your task is to implement a C version of the spectrogram algorithm that you wrote in Part 3. Here are some guidelines for how to proceed:

  • Remember you are doing block-based processing. Every time process() is called, inBuf has N samples available to be processed.
  • Read Section 2.1 of the FFTW tutorial to understand the data structures and function calls of the FFTW library.
  • Remember that floating point is available on this processor.
  • Use the test vector to verify that intermediate operations are being computed correctly (e.g., multiplication, zero-padding, log function, etc.).
  • For extra credit , implement a scheme that allows for arbitrary overlapping. This may require modifying code in Lab4Activity.java

Scaling the output

The values of outBuf must be between 0.0 and 1.0. This is because the output values are directly mapped to RGB colors, with each color channel being 8 bits. As the spectrogram output is generally not in between 0.0 and 1.0, you will need to find an appropriate mapping.

One possible mapping is to linearly scale and saturate the spectrogram output; you must determine the scaling parameters experimentally by processing real audio data. Here is an outline of one way to do this:

  • Start up the GDB debugger and Resume with all breakpoints disabled.
  • While playing a loud tone (i.e., generate in MATLAB and play out through headphones), set a breakpoint right before your process() function returns.
  • Export the inBuf array to a file. Review Part 2: Exporting Variables to a File if you don't remember how.
  • Repeat this process for noise-only input.
  • Import the two files into MATLAB to determine a suitable dynamic range.
This method also enables you to verify the functional correctness of your C code by exporting the spectrogram output to a file.

Quiz information

Be able to describe the effects of windowing and zero-padding on FFT spectral analysis. Know basic properties of the Fourier transform, DTFT, and DFT. What are the trade-offs between block-based and sample-by-sample processing? Although we did not require you to implement it, understand the effects of overlapping when computing the STFT. Understand the basic Android project structure and the relationship between Java and C programming for Android.

Questions & Answers

what's economic
kamal Reply
Management of money such as saving.
study of how society manage it's scare resources
Please help me how to compute national income. what are those included on national income like for an example in W= WAGE what included in wage ?
love Reply
what is competitive market?
Shantal Reply
a compataive market is when there are many producers competating to provide consumers with a goods and services needed
in a compitative market no single producer or consumer can dictate the market
where many buyer and many seller interact for particular good or service, all buyers and sellers have negligible affect on market price.
types of demand elasticity
Farouq Reply
What is price elasticity of demand and its degrees. also explain factors determing price elasticity of demand?
Yutansh Reply
Price elasticity of demand (PED) is use to measure the degree of responsiveness of Quantity demanded for a given change on price of the good itself, certis paribus. The formula for PED = percentage change in quantity demanded/ percentage change in price of good A
its is necessarily negative due to the inverse relationship between price and Quantity demanded. since PED carries a negative sign most of the time, we will usually the absolute value of PED by dropping the negative sign.
PED > 1 means that the demand of the good is price elasticity and for a given increase in price there will be a more then proportionate decrease in quantity demanded.
PED < 1 means that the demand of the good is price inelasticity and for a given increase in price there will be a less then proportionate decrease in quantity demanded.
The factors that affects PES are: Avaliablilty of close substitutes, proportion of income spent on the good, Degree of necessity, Addiction and Time.
Calculate price elasticity of demand and comment on the shape of the demand curve of a good ,when its price rises by 20 percentage, quantity demanded falls from 150 units to 120 units.
Helen Reply
5 %fall in price of good x leads to a 10 % rise in its quantity demanded. A 20 % rise in price of good y leads to do a 10 % fall in its quantity demanded. calculate price elasticity of demand of good x and good y. Out of the two goods which one is more elastic.
what is labor
Grace Reply
labor is any physical or mental effort that helps in the production of goods and services
what is profit maximizing level of out put for above hypothetical firm TC = Q3 - 21Q2 + 600 + 1800 P = 600 MC = 3Q2 - 42Q + 600
Sosna Reply
consider two goods X and Y. When the price of Y changes from 10 to 20. The quantity demanded of X changes from 40 to 35. Calculate cross elasticity of demand for X.
sorry it the mistake answer it is question
consider two goods X and Y. When the price of Y changes from 10 to 20. The quantity demanded of X changes from 40 to 35. Calculate cross elasticity of demand for X.
The formula for calculation income elasticity of demand is the percent change in quantity demanded divided by the percent change in income.
what is labor productivity
Lizzy Reply
if the demand function is q=25-4p+p² 1.find elasticity of demand at the point p=5?
Puja Reply
what are some of the difference between monopoly and perfect competition market
Obeng Reply
n a perfectly competitive market, price equals marginal cost and firms earn an economic profit of zero. In a monopoly, the price is set above marginal cost and the firm earns a positive economic profit. Perfect competition produces an equilibrium in which the price and quantity of a good is economic
what are some characteristics of monopoly market
Obeng Reply
explicit cost is seen as a total experiences in the business or the salary (wages) that a firm pay to employee.
Idagu Reply
what is price elasticity
it is the degree of responsiveness to a percentage change in the price of the commodity
economics is known to be the field
John Reply
what is monopoly
Peter Reply
what is taxation
is the compulsory transfer of wealth from the private sector to the public sector
Got questions? Join the online conversation and get instant answers!
Jobilize.com Reply

Get the best Algebra and trigonometry course in your pocket!

Source:  OpenStax, Ece 420 fall 2013. OpenStax CNX. Sep 26, 2013 Download for free at http://cnx.org/content/col11560/1.3
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ece 420 fall 2013' conversation and receive update notifications?