matlab fft正半频率,在MATLAB中弄清楚实际频率值与FFT绘图指数之间的关系存在困惑...

我知道有很多类似的问题,我仍然无法找到答案.

假设我们在MATLAB中有时间信号:

t=0:1/44100:1

和频率为500Hz的余弦信号:

x=cos(2*pi*500*t);

现在,我试图绘制使用fft命令在信号x上获得的幅度谱

FFT=abs(fft(x))

plot(FFT)

根据该理论,我们应该在图中得到两个峰值,一个在-500 Hz,另一个在500Hz.

我不明白的是,我确实得到了两个峰值,但我无法弄清楚这些峰值的频率.我知道有一种方法可以使用FFT索引,输入信号的长度和采样频率来计算频率,但我仍然无法计算频率.

我知道有一些方法可以对齐FFT图,使得峰值位于它们通过使用fftshift函数表示的频率的索引号,但我想要的是使用简单地调用此图得到的图来计算频率功能:

FFT=fft(x)

在这种情况下,我已经知道信号包含500Hz的余弦,但是如果我们想要获得FFT的信号在时间之前是未知的.如何使用fft函数的输出得到该样本中峰的频率值?

最佳答案 您需要自己生成频率数组并根据它绘制FFT结果.

像这样:

function [Ycomp, fHz] = getFFT(data, Fs)

len = length(data);

NFFT = 2^nextpow2(len);

Ydouble = fft(data, NFFT)/len; % Double-sided FFT

Ycomp = Ydouble(1:NFFT/2+1); % Single-sided FFT, complex

fHz = Fs/2*linspace(0,1,NFFT/2+1); % Frequency array in Hertz.

semilogx(fHz, abs(Ycomp))

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值