白噪声下真实正弦波的精确频率估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及数据


💥1 概述

在白噪声下,真实正弦波的精确频率估计是一个重要的研究课题,因为白噪声会对信号的频率进行干扰,使得频率估计变得困难。下面是一些常用的方法来进行真实正弦波的精确频率估计研究:

1. 傅里叶变换:通过对信号进行傅里叶变换,可以得到信号的频谱信息,从而可以估计出频率。然而,在白噪声下,信号的频谱可能会被噪声掩盖,导致频率估计的不准确性。

2. 自相关函数:自相关函数可以用来评估信号中重复出现的模式,从而可以用来估计信号的频率。然而,在白噪声下,自相关函数的峰值可能会被噪声掩盖,导致频率估计的不准确性。

3. 峰值检测:通过寻找信号的峰值来进行频率估计。然而,在白噪声下,峰值可能会被噪声掩盖,导致频率估计的不准确性。

4. 希尔伯特变换:希尔伯特变换可以将信号从时域转换到频域,从而可以得到信号的频率信息。然而,在白噪声下,希尔伯特变换可能会受到噪声的影响,导致频率估计的不准确性。

综上所述,白噪声下真实正弦波的精确频率估计是一个复杂的问题,需要综合运用多种方法来进行研究和解决。在实际应用中,可以根据具体的情况选择合适的方法来进行频率估计。

📚2 运行结果

可视化代码:

figure()
semilogy(SNRdB,CRLB/Fs*N,'--ks',SNRdB,RMSEBin(:,1),'-mo',SNRdB,RMSEBin(:,2),'-r*',...
    SNRdB,RMSEBin(:,3),'-gd',SNRdB,RMSEBin(:,4),'-c.',SNRdB,RMSEBin(:,5),'-b^',...
    SNRdB,RMSEBin(:,6),'-bv','LineWidth',1.2)
legend('CRLB','Proposed, second','Proposed, third','PSVD [5]','Djukanovic [9]','Ye [12],\it{T}=2','Ye [12],\it{T}=4')
xlabel('SNR(dB)')
ylabel('RMSE(in DFT bins)')
axis([-10,60,5*10^-5,20])
grid on
saveas(gcf,'..\results\Fig1.png')

%% Fig 2
Fs = 1; % Sampling frequency
N = [16 64 256 1024 4096]; % Number of samples
A = 1; % Half of Amplitude
SimTimes = 2000; % Number of simulation
SNRdB = 20; % SNR
RMSE = zeros(length(N),6); % RMSE
CRLB = sqrt(3*Fs^2./(pi^2*N.*(N.^2-1)*10.^(SNRdB/10))).'; % CRLB

for ii = 1:length(N)
    ErrF = zeros(SimTimes,6); % Error of frequency estimation
    for jj = 1:SimTimes
        F = Fs/N(ii)*1.2; % Frequency
        P = rand*2*pi; % Initial Phase
        n = (0:N(ii)-1).'; 
        s = 2*A*cos(2*pi*F/Fs*n+P); % real sinusoid
        Ps = mean(s.^2); % Signal power
        Pn = Ps/(10^(SNRdB/10)); % Noise Power
        w = sqrt(Pn)*randn(N(ii),1);
        s = w+s; % AWGN channel
        
        EstF = ProposedInitial(s,Fs); % Initial estimate of proposed algorithm
        ErrF(jj,1) = abs(EstF-F);
        if ErrF(jj,1)>Fs/2
            ErrF(jj,1) = Fs-ErrF(jj,1);
        end
        
        EstF = ProposedFine(s,Fs); % Fine estimate of proposed algorithm
        ErrF(jj,2) = abs(EstF-F);
        if ErrF(jj,2)>Fs/2
            ErrF(jj,2) = Fs-ErrF(jj,2);
        end
        
        EstF = PSVD(s,Fs);
        ErrF(jj,3) = abs(EstF-F);
        if ErrF(jj,3)>Fs/2
            ErrF(jj,3) = Fs-ErrF(jj,3);
        end
        
        EstF = Djukanovic(s,Fs);
        ErrF(jj,4) = abs(EstF-F);
        if ErrF(jj,4)>Fs/2
            ErrF(jj,4) = Fs-ErrF(jj,4);
        end
        
        EstF = Ye(s,Fs,2); % Ye algorithm with T=2
        ErrF(jj,5) = abs(EstF-F);
        if ErrF(jj,5)>Fs/2
            ErrF(jj,5) = Fs-ErrF(jj,5);
        end
        
        EstF = Ye(s,Fs,4); % Ye algorithm with T=4
        ErrF(jj,6) = abs(EstF-F);
        if ErrF(jj,6)>Fs/2
            ErrF(jj,6) = Fs-ErrF(jj,6);
        end
        
        
    end
    RMSE(ii,:) = sqrt(mean(ErrF.^2)); % RMSE in DFT bins
end
RMSEBin = RMSE/Fs.*repmat(N.',1,6); % RMSE in DFT bins
figure()
semilogy(log2(N),CRLB/Fs.*N.','--ks',log2(N),RMSEBin(:,1),'-mo',log2(N),RMSEBin(:,2),'-r*',...
    log2(N),RMSEBin(:,3),'-gd',log2(N),RMSEBin(:,4),'-c.',log2(N),RMSEBin(:,5),'-b^',...
    log2(N),RMSEBin(:,6),'-bv','LineWidth',1.2)
legend('CRLB','Proposed, second','Proposed, third','PSVD [5]','Djukanovic [9]','Ye [12],\it{T}=2','Ye [12],\it{T}=4')
xlabel('log_2\it{N}')
ylabel('RMSE(in DFT bins)')
grid on
saveas(gcf,'..\results\Fig2.png')

%% Fig 3
Fs = 1; % Sampling frequency
N = 1024; % Number of samples
A = 1; % Half of Amplitude
SimTimes = 1000; % Number of simulation
SNRdB = 20; % SNR
x = [0.55:0.25:2.05,3,6:N/2/9:N/2-6,N/2-3,N/2-2.05:0.25:N/2-0.55]; % Frequency in DFT bins
F = x*Fs/N; % Frequency in Hz
RMSE = zeros(length(F),6); % RMSE
CRLB = sqrt(3*Fs^2./(pi^2*N.*(N.^2-1)*10.^(SNRdB/10)))*ones(length(F),1); % CRLB

for ii = 1:length(F)
    ErrF = zeros(SimTimes,6);
    CRLBInst = zeros(SimTimes,1);
    for jj = 1:SimTimes
        P = rand*2*pi; % Initial Phase
        n = (0:N-1).';
        s = 2*A*cos(2*pi*F(ii)/Fs*n+P); % real sinusoid
        Ps = mean(s.^2); % Signal power
        Pn = Ps/(10^(SNRdB/10)); % Noise Power
        w = sqrt(Pn)*randn(N,1);
        s = w+s; % AWGN channel
        
        EstF = ProposedInitial(s,Fs); % Initial estimate of proposed algorithm
        ErrF(jj,1) = abs(EstF-F(ii));
        if ErrF(jj,1)>Fs/2
            ErrF(jj,1) = Fs-ErrF(jj,1);
        end
        
        EstF = ProposedFine(s,Fs); % Fine estimate of proposed algorithm
        ErrF(jj,2) = abs(EstF-F(ii));
        if ErrF(jj,2)>Fs/2
            ErrF(jj,2) = Fs-ErrF(jj,2);
        end
        
        EstF = PSVD(s,Fs);
        ErrF(jj,3) = abs(EstF-F(ii));
        if ErrF(jj,3)>Fs/2
            ErrF(jj,3) = Fs-ErrF(jj,3);
        end
        
        EstF = Djukanovic(s,Fs);
        ErrF(jj,4) = abs(EstF-F(ii));
        if ErrF(jj,4)>Fs/2
            ErrF(jj,4) = Fs-ErrF(jj,4);
        end
        
        EstF = Ye(s,Fs,2); % Ye algorithm with T=2
        ErrF(jj,5) = abs(EstF-F(ii));
        if ErrF(jj,5)>Fs/2
            ErrF(jj,5) = Fs-ErrF(jj,5);
        end
        
        EstF = Ye(s,Fs,4); % Ye algorithm with T=4
        ErrF(jj,6) = abs(EstF-F(ii));
        if ErrF(jj,6)>Fs/2
            ErrF(jj,6) = Fs-ErrF(jj,6);
        end
        
    end
    RMSE(ii,:) = sqrt(mean(ErrF.^2,1));
end
RMSEBin = RMSE/Fs*N; % RMSE in DFT bins
figure()
semilogy(x,CRLB/Fs*N,'--ks',x,RMSEBin(:,1),'-mo',x,RMSEBin(:,2),'-r*',...
    x,RMSEBin(:,3),'-gd',x,RMSEBin(:,4),'-c.',x,RMSEBin(:,5),'-b^',...
    x,RMSEBin(:,6),'-bv','LineWidth',1.2)
legend('CRLB','Proposed, second','Proposed, third','PSVD [5]','Djukanovic [9]','Ye [12],\it{T}=2','Ye [12],\it{T}=4')
xlabel('\it{Nf/fs}')
ylabel('RMSE(Hz)')
axis([0,512,1*10^-3,1])
grid on
saveas(gcf,'..\results\Fig3.png')

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1] Ying X , Shu-Xiong L , Jun-Xun Y .Frequency estimation of single complex sinusoid in white Gaussian noise[J].Journal of China Institute of Communications, 2002.DOI:10.1002/mop.10502.

[2] Liu S , Xu W , Wang Z .An Accurate Frequency Estimator of Single Sinusoid in Gaussian Colored Noise.[C]//International Conference on Innovative Computing.IEEE, 2006.DOI:10.1109/ICICIC.2006.227.

[4]丁志中.白噪声背景下正弦信号频率和功率估计的有效算法[J].合肥工业大学学报:自然科学版, 1995, 18(4):6.DOI:CNKI:SUN:HEFE.0.1995-04-002.

[5]吴珊珊胡国兵丁宁汤滟.正弦波频率估计结果的可靠性评估算法研究[J].现代雷达, 2015, 37(3):31-35.

🌈4 Matlab代码及数据

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值