• 概述

由于FFT运算存在量化误差。当输入信号的频率不在FFT量化频率点处时,直接用FFT运算的最大谱线位置来估计正弦输入信号的频率,将存在量化误差,其误差范围为[-fs/(2N),fs/(2N)],其中,fs为采样频率,N为FFT点数。通过利用最大谱线以及与其相邻的次大谱线进行插值,得到的频率估计算法被人们称之为Rife算法。Rife算法所得到的频率估计值如下图所示:

图1公式

对x(n)作FFT,取其中的最大谱线值|X(K0)|。,次大谱线值记为|X(K0+r)|,∣X(K

0+1)∣≤∣X(K 0−1)∣时,r = -1;当∣ X ( K 0 + 1 ) ∣ ≤ ∣ X ( K 0 − 1 ) 时,r = 1;T = NΔt。

  • Matlab的代码实现

本文通过在正弦信号添加高斯噪声利用Rife算法进行频率估计。

 1、生成正弦波

clc,clear,close all;
f=100;                          %信号频率为
A=2;                            %设置正弦波幅值
N=1024;                         %采样点个数
n=0:N-1;                        %采样序列
fs=2000;                        %采样频率为fs=2K
ts=1/fs;                        %采样间隔
T=N*ts;                         %采样时间x=A*sin(2*pi*f*n*ts);           %正弦波信号
subplot(3,1,1);plot(n*ts,x);

2、添加高斯噪声 

%添加高斯噪声
SNR=-5;                        %测试发现信噪比等于-50时,无法估计
xn=awgn(x,SNR);                 %SNR参数,可参考awgn函数
subplot(3,1,2);plot(n*ts,xn);

3、傅里叶变换

%FFT变换在频谱上观察信号频率
m=-fs/2:(fs/N):(fs/2-(fs/N));   %其中fs/N为采样分辨率
y=fft(xn);
y=fftshift(y);
subplot(3,1,3);plot(m,abs(y));  

4、Rife算法

运行结果如下:

注:在算法实现中,其中有个posMax要减1,因为运算时角标从1开始的,实际中要减1.

5、参考源码:

Rife算法的Matlab实现-嵌入式文档类资源-CSDN下载

6、参考文献:

《正弦波频率估计的修正Rife算法_邓振淼》

Rife算法的Matlab实现相关推荐

  1. Rife算法的一种Matlab实现

    Rife算法原理及介绍 信号频谱的最大两根谱线进行插值对频率进行估计,即Rife算法.当信号频率位于离散傅里叶变换(DFT)两个相邻量化频率点的中心区域时,Rife算法精度很高,均方根误差接近克拉美罗 ...

  2. fcm算法的MATLAB实现,FCM算法的matlab程序(初步)

    FCM算法的matlab程序 1.采用iris数据库 iris_data.txt 5.1 3.5 1.4 0.2 4.9 3 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0 ...

  3. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章

    资料来源: <智能优化算法以及matlab实现>包子阳  余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...

  4. matlab dfp法,DFP算法及Matlab程序.docx

    DFP算法及Matlab程序 作业二 用DFP算法求解,取,.一.求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因H ...

  5. matlab整定串级pid,PID算法在Matlab串级控制中的应用

    PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...

  6. PSO-LSSVM算法及其MATLAB代码

    挺完整的一篇博客,这里转载记录一下. 原文链接:PSO-LSSVM算法及其MATLAB代码 一.PSO 1.概念 粒子群优化算法(PSO:Particle swarm optimization)是一种 ...

  7. matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀

    作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...

  8. matlab音频基频的提取,(620512681) 自相关基频提取算法的MATLAB实现

    第31卷总第80期 西北民族大学学报(自然科学版) V01.31.No.4 1 0年1 2 0 2月 Journal of Nonhw铭t University for Nationalities(N ...

  9. fdtd算法的matlab程序,FDTD算法的Matlab程序

    <FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...

  10. hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码

    Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...

最新文章

  1. 笔记-信息系统安全管理-开放系统互连安全体系
  2. 动态规划是真的难啊坚持
  3. 据说一般人轻易做不了技术支撑…
  4. boost::mp11::mp_rename相关用法的测试程序
  5. [攻防世界 pwn]——dice_game
  6. ID3决策树中连续值的处理+周志华《機器學習》图4.8和图4.10绘制
  7. TigerGraph持续产品创新,发布最新的“全民图”版本
  8. 针对12306.cn网站应用架够的一些看法
  9. JS中的柯里化(currying) 转载自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
  10. python验证软件签名
  11. 一文62页PPT读懂中国供应链金融
  12. 学习笔记 Tianmao 篇 RecyclerView.Adapter 的封装
  13. ai 自动外呼 微信加好友_制作一个可爱的Pwnagotchi AI好友来自动审核Wi-Fi网络
  14. 为了写好代码,你坚持了哪些好习惯?
  15. VMware虚拟串口的设置与使用
  16. cas112-79-4/中介四(3-羟基苯基)卟吩/5,10,15,20-四(3-羟基苯基)卟啉/MESO-四(间-苯酚)卟啉/3,3‘,3‘‘,3‘‘‘-(卟啉-5,10,15,20-四基)四酚
  17. punycode编码
  18. 手把手教你移植 tinyriscv 到FPGA上
  19. 计算机物联网应用技术工资,物联网专业毕业生现状 刚毕业薪资多少
  20. 英语作文计算机国际会议开幕词,有关英语会议开场致辞范文

热门文章

  1. vue 中使用菜鸟打印
  2. 《惢客创业日记》2019.05.20(周一)向技术大牛请教(二)
  3. 人工智能革命(上):通往超级智能之路
  4. 关于c语言打印图案的解析,c语言星号打印矩形、三角形、菱形等图案和答案解析.doc...
  5. ubuntu 配置 ADSL 拨号上网
  6. JavaScriipt高级程序设计
  7. 免费画图软件推荐 - draw.io
  8. 聊天机器人闲聊语料 - 1
  9. Window系统: 解决 win xp系统 最新版QQ/TIM安装包 报错误 安装包可能被非法改动导致安装失败 云云.2021-02-15
  10. 【训练计划】--2019-04