从FFT读取频率

10次​​观看(过去30天)
uzmeed
uzmeed 2018年1月27日
编辑: youssef khmou. 2018年1月30日
我想读取以下程序的所有峰的频率,以下程序没有正确读取它,而不是给予100,因此它给出它的输出为360 400,请帮助我如何获得频率的值
FS = 65536;%采样频率(Hz)ts = 1 / fs;%采样间隔(秒)fn = fs / 2;%奈奎斯特频率(Hz)l = 16384;%信号长度(样本)T = [0:(L-1)] * TS;%时间向量(SEC)S = COS(2 * PI * 100 * T);%信号(100Hz)图(1)图(S)FTS = FFT(S,FS)/ L;%实验#1 fv = linspace(0,1,FIX(FS / 2)+1)* fn;IV = 1:长度(FV);[Papfts,IDX] = MAX(ABS(FTS(IV))* 2);%找到最大和索引图(2)
图(FV,ABS(FTS(IV))* 2)轴([0 500 ylim])网格
f = fs / 2 * linspace(0,1,l / 2 + 1);[B,IX] =排序(2 * ABS(FTS(1:L / 2 + 1)));%顺序幅度A1 = B(端);第一峰值A2 = B的%幅度(结束-1);第二峰值F1 = F的%幅度(Ix(端));第一峰f2 = f的%频率(ix(端-1));第二峰的%频率bfloor = 0.1;%bfloor是最小幅度值(忽略小值)幅度= b(b> = bfloor)%找到bfloor频率上方的所有幅度= f(ix(1 +末端磁数(幅度):端))%频率山顶
关于uzmeed

答案(2)

youssef khmou.
youssef khmou. 2018年1月27日
程序的第一部分是正确的,结果是100 Hz:
FS = 65536;%采样频率(Hz)
ts = 1 / fs;%采样间隔(秒)
fn = fs / 2;%奈奎斯特频率(Hz)
l = 16384;%信号长度(样本)
t = [0:(l-1)] * ts;%时间向量(秒)
s = cos(2 * pi * 100 * t);%信号(100 hz)
图(1),绘图,
FTS = FFT(S,FS)/ L;%实验#1
Fv = Linspace(0,1,FIX(FS / 2)+1)* Fn;
IV = 1:长度(FV);
[Papfts,IDX] = MAX(ABS(FTS(IV))* 2);%找到最大和索引
图(2)
图(Fv,ABS(FTS(IV))* 2),
轴([0 500 ylim]),网格;
频率值是
>> Fv(IDX)

uzmeed
uzmeed 2018年1月27日
比你youssef它帮助了我,请指导如果输入是FFT中具有多个有效峰的频率调制信号,那么如何正确列出所有峰值。
我已经附加了JPG供参考对接输入是Ant LFMOP信号
最好的问候uzmeed
1条评论
youssef khmou.
youssef khmou. 2018年1月30日
对于多峰的情况,您可以使用峰值检测过程,如果波形由持续速率变化的频率,则每个示例可以在半最大值下计算频谱以估计带宽。

登录评论。

标签

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!