Rife算法的Matlab实现
概述
由于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实现相关推荐
- Rife算法的一种Matlab实现
Rife算法原理及介绍 信号频谱的最大两根谱线进行插值对频率进行估计,即Rife算法.当信号频率位于离散傅里叶变换(DFT)两个相邻量化频率点的中心区域时,Rife算法精度很高,均方根误差接近克拉美罗 ...
- 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 ...
- 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章
资料来源: <智能优化算法以及matlab实现>包子阳 余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...
- matlab dfp法,DFP算法及Matlab程序.docx
DFP算法及Matlab程序 作业二 用DFP算法求解,取,.一.求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因H ...
- matlab整定串级pid,PID算法在Matlab串级控制中的应用
PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...
- PSO-LSSVM算法及其MATLAB代码
挺完整的一篇博客,这里转载记录一下. 原文链接:PSO-LSSVM算法及其MATLAB代码 一.PSO 1.概念 粒子群优化算法(PSO:Particle swarm optimization)是一种 ...
- matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀
作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...
- matlab音频基频的提取,(620512681) 自相关基频提取算法的MATLAB实现
第31卷总第80期 西北民族大学学报(自然科学版) V01.31.No.4 1 0年1 2 0 2月 Journal of Nonhw铭t University for Nationalities(N ...
- fdtd算法的matlab程序,FDTD算法的Matlab程序
<FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...
- hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码
Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...
最新文章
- 笔记-信息系统安全管理-开放系统互连安全体系
- 动态规划是真的难啊坚持
- 据说一般人轻易做不了技术支撑…
- boost::mp11::mp_rename相关用法的测试程序
- [攻防世界 pwn]——dice_game
- ID3决策树中连续值的处理+周志华《機器學習》图4.8和图4.10绘制
- TigerGraph持续产品创新,发布最新的“全民图”版本
- 针对12306.cn网站应用架够的一些看法
- JS中的柯里化(currying) 转载自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
- python验证软件签名
- 一文62页PPT读懂中国供应链金融
- 学习笔记 Tianmao 篇 RecyclerView.Adapter 的封装
- ai 自动外呼 微信加好友_制作一个可爱的Pwnagotchi AI好友来自动审核Wi-Fi网络
- 为了写好代码,你坚持了哪些好习惯?
- VMware虚拟串口的设置与使用
- cas112-79-4/中介四(3-羟基苯基)卟吩/5,10,15,20-四(3-羟基苯基)卟啉/MESO-四(间-苯酚)卟啉/3,3‘,3‘‘,3‘‘‘-(卟啉-5,10,15,20-四基)四酚
- punycode编码
- 手把手教你移植 tinyriscv 到FPGA上
- 计算机物联网应用技术工资,物联网专业毕业生现状 刚毕业薪资多少
- 英语作文计算机国际会议开幕词,有关英语会议开场致辞范文
热门文章
- vue 中使用菜鸟打印
- 《惢客创业日记》2019.05.20(周一)向技术大牛请教(二)
- 人工智能革命(上):通往超级智能之路
- 关于c语言打印图案的解析,c语言星号打印矩形、三角形、菱形等图案和答案解析.doc...
- ubuntu 配置 ADSL 拨号上网
- JavaScriipt高级程序设计
- 免费画图软件推荐 - draw.io
- 聊天机器人闲聊语料 - 1
- Window系统: 解决 win xp系统 最新版QQ/TIM安装包 报错误 安装包可能被非法改动导致安装失败 云云.2021-02-15
- 【训练计划】--2019-04