sgram(f,op1,op2, ... ); sgram(f,fs,op1,op2, ... ); C=sgram(f, ... );
sgram(f) plots a spectrogram of f using a Discrete Gabor Transform (DGT).
sgram(f,fs) does the same for a signal with sampling rate fs (sampled with fs samples per second);
sgram(f,fs,dynrange) additionally limits the dynamic range of the plot. See the description of the 'dynrange' parameter below.
C=sgram(f, ... ) returns the image to be displayed as a matrix. Use this in conjunction with imwrite etc. These coefficients are only intended to be used by post-processing image tools. Numerical Gabor signal analysis and synthesis should always be done using the dgt, idgt, dgtreal and idgtreal functions.
Additional arguments can be supplied like this:
sgram(f,fs,'dynrange',50)
The arguments must be character strings possibly followed by an argument:
| 'dynrange',r | Limit the dynamical range to r by using a colormap in the interval \([chigh-r,chigh]\), where chigh is the highest value in the plot. The default value of [] means to not limit the dynamical range. |
| 'db' | Apply 20*log10 to the coefficients. This makes it possible to see very weak phenomena, but it might show too much noise. A logarithmic scale is more adapted to perception of sound. This is the default. |
| 'lin' | Show the energy of the coefficients on a linear scale. |
| 'tfr',v | Set the ratio of frequency resolution to time resolution. A value \(v=1\) is the default. Setting \(v>1\) will give better frequency resolution at the expense of a worse time resolution. A value of \(0<v<1\) will do the opposite. |
| 'wlen',s | Window length. Specifies the length of the window measured in samples. See help of pgauss on the exact details of the window length. |
| 'posfreq' | Display only the positive frequencies. This is the default for real-valued signals. |
| 'nf' | Display negative frequencies, with the zero-frequency centered in the middle. For real signals, this will just mirror the upper half plane. This is standard for complex signals. |
| 'tc' | Time centering. Move the beginning of the signal to the middle of the plot. This is useful for visualizing the window functions of the toolbox. |
| 'image' | Use imagesc to display the spectrogram. This is the default. |
| 'clim',clim | Use a colormap ranging from \(clim(1)\) to \(clim(2)\). These values are passed to imagesc. See the help on imagesc. |
| 'thr',r | Keep only the largest fraction r of the coefficients, and set the rest to zero. |
| 'fmax',y | Display y as the highest frequency. Default value of [] means to use the Nyquist frequency. |
| 'xres',xres | Approximate number of pixels along x-axis / time. The default value is 800 |
| 'yres',yres | Approximate number of pixels along y-axis / frequency The Default value is 600 |
| 'contour' | Do a contour plot to display the spectrogram. |
| 'surf' | Do a surf plot to display the spectrogram. |
| 'colorbar' | Display the colorbar. This is the default. |
| 'nocolorbar' | Do not display the colorbar. |
In addition to these parameters, sgram accepts any of the flags from setnorm. The window used to calculate the spectrogram will be normalized as specified.
The greasy signal is sampled using a sampling rate of 16 kHz. To display a spectrogram of greasy with a dynamic range of 90 dB, use:
sgram(greasy,16000,90);
To create a spectrogram with a window length of 20ms (which is typically used in speech analysis) use
fs=16000; sgram(greasy,fs,90,'wlen',round(20/1000*fs));