Technical discussion about Matlab and issues related to Digital Signal Processing.
Hi everyone, i did short time fourier transform(STFT) on 1-D speech signals, and did spectrogram analysis. On one paper I found that it is possible to come up with a wavelet based analogy of spectrograms, it was called "scalogram" at that paper. So, I set about trying to figure out a way to come up with scalogram code in matlab. After coding a matlab program which does a full decomposition of any given 1-D signal using dwt at each level, upto the desired level, unlike built in matlab wavedec.m function, I am trying to figure out how to find a way to translate the information i have (the approximation and detail coefficients) into spectrogram like graph. I know I have to do some sort of scale to frequency conversion, but I am not sure how to acquire the scale information from the coefficients. Furthermore, what do i do to the coefficients in order to find out the power (energy) of the signal, do i just perform a square of all the approximation and detail coefficients.. but then how do i combine them? Given a 1-D signal, suppose, by performing STFT on a 1-D signal, after windowing and performing fft, there ends up being 128 frequency components and 200 (or something like that) time components. It is possible to get the magnitude of the fft directly in matlab with the abs() function for each frequency component. However, when using wavelet, how is it possible to get the magnitude of each frequency after performing "dwt" operation on the same 1-D windowed signal? I was able to perform dwt of it and get the 128 subbands after full decomposition till 7 levels (not using the matlab "wavedec" function). I want to be able to get the frequency at each scale so that i can get the magnitude like information, and so, I have looked up the mathworks help site. There are 2 functions "centfrq" which computes the center frequency of a wavelet and another function scale2freq which does the frequency to scale conversion. However, the scale2freq function requires that the user has to know the scale of the signal, according to the example. If the signal is unknown, how is it possible to give an accurate scale in order to get the pseudofrequency information for each subband? basically, i want to be able to get a spectrogram like picture using wavelets where i can get the power/energy of the signal displayed in time and frequency. I even tried using continuous wavelet transforms with the scales=1:2.^7 to get the coefficients and then plotted them, but i couldnt get the right frequency or the proper plot. I would really appreciate any help, regarding this problem. thanks in advance.