从正弦波中找出频率值

时间:2013-09-07 10:05:45

标签: matlab wav

我有一个以下的正弦波方程

Fs = 8000; % Sampling rate of signal
Fc = 3000; % Carrier frequency
t = [0:Fs-1]'/Fs; % Sampling times
dev = 50; % Frequency deviation in modulated signal

s1 = sin(2*pi*200*t)+2*sin(2*pi*f*t);

现在我想为 s1 等式 f ,我们怎样才能得到这个?感谢

1 个答案:

答案 0 :(得分:1)

您可能需要查看SO以查找similar个问题。

FFT是解决问题的最简单途径:

spec = abs(fft(s1));

然后使用检测阈值搜索光谱中的最大值。

示例(此处f=10):

f= 10;
s1 = sin(2*pi*200*t)+2*sin(2*pi*f*t);

thresh = 0.2;
f1=abs(fft(s1))/sum(abs(s1));
f= [0:length(f1)-1]/length(f1)*Fs;
f(f1(1:end/2)>0.2)

这是结果(幅度大于阈值的峰的频谱中的频率):

ans =

    10   200