【问题标题】:Find value of frequency form Sin wav从正弦波中找到频率值
【发布时间】:2013-09-07 10:05:44
【问题描述】:

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

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 的值,我们怎样才能得到这个?谢谢

【问题讨论】:

  • 问题不清楚:你想用频率调制来调制信号吗?或者您想确定给定测量信号的频率? fFc 一样吗?
  • 不清楚您所说的“f”是什么意思。上面的代码会返回一个错误,因为 f 没有定义。您始终可以执行 fft 并找到频谱中的最大值以确定信号中的频率。

标签: matlab wav


【解决方案1】:

您可能想四处寻找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

【讨论】:

  • 感谢您的回答我只想要在您的示例中为 10 的 f 值,因为我想将它与其他 sin wav 频率进行比较?只有 f 值?
  • 我得到了这个 Fs = 8000; % 信号采样率 Fc = 3000; % 载波频率 t = [0:Fs-1]'/Fs; % 采样时间 f= 10; s1 = sin(2*pi*200*t)+2*sin(2*pift);阈值 = 0.2; f1=abs(fft(s1))/sum(abs(s1)); f= [0:长度(f1)-1]/长度(f1)*Fs; dd= f(f1(1:end/2)>0.2); dd dd(1:end,1) dd = 10 200 ans = 10
  • @user2322360 我对你的问题有点困惑。请看看我是如何修改答案的,希望这能让一切都清楚。我以“f”的特定值为例。这个想法是,如果 f 未知,通过遵循与我发布的方法类似的方法,您可以确定 f 的未知值。
  • 我已经有了一个 sin wav 的 'f' 值我想将另一个 sin wav 与我在 switch 中的 sin wav 进行比较,但无法将 sin wav 与其他 finaly 进行比较一种方法是比较两个 sin wav 的“f”值来做出决定。所以我得到了'f'的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2023-04-06
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
相关资源
最近更新 更多