[solved] difference between 2 spectrograms

Hello,
Here is the situation:
I have a dynamic system equipped with a vibration sensor.
this system has 2 configurations; I have 1 record of 10 minutes in each configuration
I plot spectrogram for each. So far, everything is fine
[s,f,t]=spectrogramspectrogram(data,hamming(wdw),overlap,[],10240);
[s2,f,t]=spectrogram(data2,hamming(wdw),overlap,[],10240);
Now I want to compare (make a difference) of these spectrograms, but
I can do s-s2, but before
I can't plot back the spectrogram from s
I tried several thing such as
im=imagesc(h/1000,(t/60),(abs((s')))) ; % tested with imag real and with image
colorbar
ylabel('Time (mins)');
xlabel('Frequency (kHz)');
but the result is different from
spectrogram(data,hamming(wdw),overlap,[],10240);
thank you for your answer

 采纳的回答

bryan
bryan 2019-9-25
编辑:bryan 2019-9-25
Hello,
thank you for your answer, this is great help
here is the result
Sans titre.png
this is the best result I got so far. :D
some possible improvments
-the last time index is deleted
-Z data is different (but I will make comparisons, si not very important)
-the pscolor give a flat image, when spectrogram give a 3D I can rotate

1 个评论

For the last point you can simply change pcolor to surf. For the point about the colour-scale, it might be that the top plot is something like:
pcolor(f,t,10*log10(abs(s)/max(abs(s(:))))), shading flat
that is display the spectrogram in dB relative to the strongest component.

请先登录,再进行评论。

更多回答(5 个)

Spectrogram called without input arguments seems to plot log10 of the power. try this:
im = pcolor(h/1000,(t/60),log10(abs((s'))));
shading flat
colorbar
ylabel('Time (mins)');
xlabel('Frequency (kHz)');
HTH
bryan
bryan 2019-9-25
thank you again
surf work fine (I think I got a parenthesis problem)
I will try this suggestion for amplitude
but for the time, I have a synchronisation problem visible in the rounded areaSans titre.png

1 个评论

That has something to do with what your red curve is, and not that much with the spectrogram-plot, I think.
A completely different question is if you need this spectral resolution - you might get more useful results if you reduce the length of your window. That would reduce the frequency-resolution but will give you improved time-resolution.

请先登录,再进行评论。

Thank you for your answer, and sorry for the late reply
  • for the problem of Z difference, I searched in pspectrogram.m, and it seems to be
hndl = surf(t, f, 10*log10(abs(Pxx)+eps),'EdgeColor','none');
so I tried it (without eps), and I noticed the original spectrogam plot removes low frequency, so this also explain why the scale is different, because the low frequencies are high on my data.
I will have a look at the time synchro next time
bryan
bryan 2019-10-25
编辑:bryan 2019-10-28
Hello,
for the Z resolution problem (yes it's a late reply), I solved by myself
I noticed surf function doesn't plot the last Y value
So I added a dummy column on the matrix, a dummy element on the Y vector and now I see as much lines in the ploted surface as it actually has

1 个评论

Yes, that is true, but the "red curve" of yours varies at shorter time-scales than your time-resolution of your spectrogram - to try to resolve that you could try to run spectrogram with a shorter window, wdw, and overlap (this will reduce the spectral resolution, but you have plenty of that already.)
HTH

请先登录,再进行评论。

bryan
bryan 2019-10-28
yes, well this is another issue.
this is easy to change, exept I face memory problems (there are lots of data).I focus on the stabilized areas for the moment

2 个评论

You will not get more data in your spectrogram if you increase the time-resolution and reduce the spectral resolution - this is Heisenberg! As your spectrogram looks now you have "too high" spectral resolution and too low temporal resolution.
you are right, nfft=528 is enaught

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Time-Frequency Analysis 的更多信息

产品

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by