matlab确定采样频率,从MATLAB中的信号数据中确定频率

一种方法是使用fft.由于fft给出了信号的频率表示,所以您要寻找最大值,并且由于fft是一个复杂的信号,您将需要先获取绝对值.该指数将对应于具有最大能量的归一化频率.最后,如果您的信号有一个偏移量,就像您显示的那样,您需要在取出fft之前摆脱该偏移量,以便在代表DC分量的原点处没有得到最大值.

我描述的一切都放在一行:

[maxValue,indexMax] = max(abs(fft(signal-mean(signal))));

其中indexMax是可以找到max fft值的索引.

注意:要从indexMax到实际感兴趣的频率,您将需要知道fft的长度L(与信号的长度相同)和采样频率Fs.信号频率为:

frequency = indexMax * Fs / L;

或者,根据您所拥有的信号,速度更快,工作相当好,请采取自动相关信号:

autocorrelation = xcorr(signal);

并发现在自相关的中心点之后出现的第一个最大值. (自相关将是对称的,其最大值在中间.)通过找到最大值,您会发现移位信号看起来与自身相似的第一个位置.即你找到你的信号的时间段.由于信号偏移了其周期的倍数将始终看起来像自己,您需要确保您发现的最大值确实对应于信号的周期,而不是其倍数之一.

由于您的信号中的噪音,绝对最大值可能很好地发生在您的周期的倍数,而不是周期本身.所以为了解释这个噪音,你将取自动相关的绝对最大值(自相关(长度(自相关)/ 2 1)),然后找到自相关大于第一次的最大值的95%在信号的下半部分,95%,99%或其他一些数字将取决于多少噪声会破坏您的信号.

更新:我意识到,我认为你的意思是“频率”你的信号的音调或基本的谐波或频率最多的能量,但是你想看看它.如果按频率表示您的信号的频率表示,然后再进行第一次近似,您只需要绘制FFT的绝对值,以了解能量的位置:

plot(abs(fft));

如果你想了解为什么有一个abs,或者什么相关的信息,你失去了不代表fft的阶段,你可能想要更多地阅读DFT转换,以了解你得到什么.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值