Beating wave frequency detecting

Hi all, I know that two sine waves with different frequencies superimposed to create beating patterns, but how to detect the frequency of such beating pattern??
code:
clear;
clc; close
t = linspace(0,10, 1000);
Fs = 100;
f1 = 8;
f2 = 9;
y = sin(2*pi*f1*t) + sin(2*pi*f2*t); %+ randn(size(t));
plot(t, y)
direct fft can only find two peaks at 8-Hz and 9-Hz, but where is the 1-Hz??
I just figure out that fft to abs(y) shows the beating frequency. but is there a way that I can show 1, 8, 9-Hz together in one spectrum?
Thank you for any help Kyle

 采纳的回答

Hi Kyle, the beat is an amplitude modulation at 1 Hz.
You can visualize this by looking at the oscillation in the envelope, which you can isolate with the Hilbert transform
ya = hilbert(y);
plot(t(1:500),abs(ya(1:500)));
grid on;
You can see that the envelope oscillates at 1 Hz, which is your beat frequency.

1 个评论

There is no 1-Hz component in the spectrum of y by the way.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by