Time-frequency spectrum for a low frequency signal
2 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
回答(1 个)
Vinay
2024-9-25
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!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Time-Frequency Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!