Time-frequency spectrum for a low frequency signal

3 views (last 30 days)
Hi,
I'm a begginer with matlab and I search to do the time-frequency spectrum for a low frequency signal.
I tried the cwt function on a "normal" frequency signal :
t = 0:0.001:20-0.001;
x = cos(2*pi*50*t).*(t > 0 & t<=5)+ ...
cos(2*pi*50*t).*(t >= 10 & t < 15)+ ...
cos(2*pi*100*t).*(t >= 10 & t < 15)+ ...
cos(2*pi*100*t).*(t >= 15 & t < 20)+ ...
0.5*randn(size(t));
[y, f] = cwt(x,30);
figure;
subplot(2,1,1)
plot(x)
subplot(2,1,2)
imagesc(abs(y).^2)
And I get this correct result :
But when I try on a low frequency signal, it doesn't work at all...
t = 0:.001:20-0.001;
x = cos(2*pi*0.005*t).*(t > 0 & t<=5)+ ...
cos(2*pi*0.005*t).*(t >= 10 & t < 15)+ ...
cos(2*pi*0.01*t).*(t >= 10 & t < 15)+ ...
cos(2*pi*0.01*t).*(t >= 15 & t < 20)+ ...
0.5*randn(size(t));
[y, f] = cwt(x,30);
figure;
subplot(2,1,1)
plot(x)
subplot(2,1,2)
imagesc(abs(y).^2)
How could I make it work? Do I need to change functions or settings?

Answers (1)

Vinay
Vinay on 25 Sep 2024
The continuous wavelet transform requires few cycles of a signal to accurately determine its frequency content within a given window. When a signal with a frequency of 0.01 Hz is used, its time period is 100 seconds. However, the signal duration is only 20 seconds, therefore cycles are not fully captured.
The issue can be resolved by extending the signal duration to exceed the signal's time period.
Additionally, for low-frequency signals, noise can introduce frequency components ranging from 0 to (fs/2 ), resulting in a wide range of low-amplitude frequency detections due to noise.
Kindly refer to the below documentation of “cwt” for more details:
I hope this helps!

Categories

Find more on Time-Frequency Analysis in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!