How do I use a loop to remove all of the noise signal segments?

3 views (last 30 days)
So there is a signal that has 0.5 secs of silence, followed by 1 sec worth of noise, another 0.5 secs of silence, and 1 sec sine wave starting at 100Hz. This pattern continues until the sine wave reaches 1000Hz. I need to use a loop to remove the noises and silence to preserve the sine waves segments. Any tips on how I can do this? Thank you!
  4 Comments
dpb
dpb on 6 Dec 2021
If you want somebody to play with your signal, make it easy for them...attach a .mat file with some sample data; don't expect somebody else to try to reproduce your data for you....

Sign in to comment.

Answers (1)

Chunru
Chunru on 7 Dec 2021
load signal
% detect the env
y = sqrt(2)* movstd(x, [200 200]);
figure
plot(x); hold on
plot(y)
% extract signal
z = x(y>0.8);
figure
spectrogram(z, 2048, 1024)

Categories

Find more on Signal Processing 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!