资源简介

matlab实现正弦波频率估计的修正rife算法

资源截图

代码片段和文件信息

function [fe k0]=mrife(xfsN)
%频率估计计算-----------------------------------------%
% x:输入数据
% fs:数据采样率
% N:实际FFT的点数   N = length(x);
% fe:估计出的频率
% k0:最长谱线的索引值
%采用mrife算法-------------------------------------------------%
%rife算法(幅度比值法)-----------------------------------------%
%n=0:1:N-1;%x(n)
delta_f = fs/N;
n=0:N-1;
Xk = fft(x);                                         %对x进行fft变换
P = abs(Xk);                                         %Xk的绝对值
%subplot(211)   stem(nP) ;grid on    %显示xn的频谱
[Pm k1] = max(P);                                    %第k1条谱线有最大值。
k0=k1-1;                                             %其实际索引值应为k1-1
f0 = delta_f*(k0);                                   %最高频率处的实际频率值
if k1==1||P(k1+1) >= P(k1-1)
    r = 1;
else
    r = -1;
end
fe = (k0+r*P(k1+r)/(P(k1)+P(k1+r)))*fs/N;            %rife算法频率估计值
fe1=fe;
%M-rife(改进rife算法)————————————————————————————————%
if f

评论

共有 条评论