Time-frequency spectrum for a low frequency signal
4 ビュー (過去 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!