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

2023-12-05

???????????????? 欢迎来到本博客 ❤️❤️????????

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

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

???????????? 本文目录如下: ????????????

目录

????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代码及数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 白色像素簇提取

    我正在研究指纹毛孔提取项目 并陷入毛孔 白色像素簇 提取的最后阶段 我有两个输出图像 我们可以从中获取毛孔 但不知道该怎么做 这两个图像的尺寸不同 image1 的尺寸为 240 320 image2 的尺寸为 230 310 这是我的图像
  • 类方法的自定义代码完成?

    在 MATLAB 中 可以定义代码建议和完成 如标题为 的文档页面中所述 自定义代码建议和完成 https www mathworks com help matlab matlab prog customize code suggestio
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • 非模态 questdlg.m 提示

    我的代码绘制了一个图 然后提示用户是否想使用不同的参数绘制另一个图 问题是 当 questdlg m 打开时 用户无法查看绘图的详细信息 这是代码 while strcmp Cont Yes 1 Some code modifying da
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • Matlab:条形图中缺少标签

    使用 Matlab 2012 和 2013 我发现设置XTickLabel on a bar图表最多只能使用 15 个柱 如果条形较多 则标签会丢失 如下所示 绘制 15 个条形图 N 15 x 1 N labels num2str x d
  • matlab中无限while嵌套在for循环中

    我想做一个while循环 嵌套在for在 Matlab 中循环以查找数据中不同对之间的距离 我的数据具有以下形式 ID lon lat time 1 33 56 40 89 803 2 32 45 41 03 803 3 35 78 39
  • Ilnumerics Ilpanel 在 winform 中编译成 dll 并加载到 matlab 时不激活

    我想将 Visual studio 2012 中用 C 编写的 winform 编译为 dll 然后将其加载到 matlab 2013a 中 然后 我想使用 matlab net 接口与 winform 进行交互 侦听其事件并通过一组预定义

随机推荐

  • 如何在线给官网搭建一个帮助文档?

    在数字化时代 帮助文档已成为官网不可或缺的一部分 然而 传统的帮助文档往往只是简单地罗列问题和答案 缺乏互动性和用户体验 那么 如何在线给官网搭建一个富有创意且用户友好的帮助文档呢 一 打造沉浸式体验 传统的帮助文档通常以文字和图片为主 缺
  • 光伏储能虚拟同步发电机并网仿真模型(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现
  • 冤哥y佬和他的happy茶(2023年四川大学腾讯杯新生赛E题の吐槽)

    第一次发帖 希望大佬们能解答 小弟是今年大二的双非计算机专业学生 在前面一年多里面有效的学习时间学的基本上都是前后端开发 现在是把重心放在了后端的开发上面 最近学校和腾讯云有个校企合作的小项 题解 X形图案 include
  • 扬帆证券:玻璃期价涨势强劲 投资者需理性看待

    上个交易周 国内产品期货商场全体工作平稳 其间 玻璃期货体现较为出色 主力合约上星期五午后忽然大幅拉升 毕竟收涨逾7 周内累计涨幅超越10 业内人士以为 近期玻璃期价走势强劲主要是受地产政策利好和本钱增加的推动 后市行情或将偏震动 上涨持续
  • MS SQL Server fill factor 面试题

    中国信达后援中心面试 有同学了解中国信达后援中心合肥金融科技岗的面试大概形式吗 深入理解和使用volatile关键字 第1章 引言大家好 今天小黑要和大家聊聊Java并发编程的一个重要话题 volatile关键字 在Java的世界里 掌握并
  • 扬帆证券:中概股的认定标准?

    首要 从法则角度来看 中概股的确认标准是什么 现在 中概股的确认标准是根据美国证券交易委员会 SEC 根据 1934年证券交易法案 规矩的 海外私募股票发行 Regulation S 和 海外揭穿发行股票 Rule 144A 的规矩来确认的
  • 扬帆证券:沪股通代表什么?

    沪股通 是指香港与我国大陆 上海 股市之间的互联互通机制 其实质是一个跨境出资项目 目的是为了完成两市彼此敞开 促进本钱商场交融 前进我国本钱商场的世界化水平 在这个机制下 香港境内的本钱可以通过指定的途径买入和卖出上海证券交易所上市的股票
  • 使用多窗口Savitzky-Golay(MWSG)滤波器增强频谱图,用于鲁棒的鸟鸣检测(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章
  • 拼多多财报解读:连接高质量供给与全球消费者,多多跨境动力澎湃

    题解 牛牛的排序 include
  • C语言--每日选择题--Day33

    第一题 1 在以下给出的表达式中 与 do while E 语句中的 E 不等价的表达式是 A E 0 B E gt 0 E lt 0 C E 0 D E 0 答案及解析 C 首先要知道 E 这个条件成立无非两种 0为假 非0为真 所以E
  • 开关电容转换器的合成器研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码实现
  • Python 简介和用途

    什么是Python Python是一种流行的编程语言 由Guido van Rossum创建 并于1991年发布 它用于以下领域 网页开发 服务器端 软件开发 数学 系统脚本编写 Python能做什么 Python可用于在服务器上创建Web
  • 如何有效进行测试执行进度计划

    测试执行通常都是处于软件测试生命周期的关键路径上 它不仅在测试过程中占有重要的地位 并且也会花费大量的测试时间 针对测试执行而进行的计划 即测试执行进度计划 是进行测试执行进度控制的基础 在进行测试执行进度计划制订的时候 需要考虑哪些因素会
  • 用AI破局,Bhout、Fiture、Keep亦步亦趋

    秋招捡漏啦 阿里补录进行中 抓紧投递吧 阿里巴巴 控股集团 爱橙科技 CFO产品技术部 base 杭州 上海 小众部门的测试开发岗 帮本小组补录测开 Java技术栈 我们是属于控股集团哈 可提供简 淘天集团顶尖人才计划T STAR全球招募启
  • 医药行业:轻松学会超低温冰箱技能

    超低温冰箱在医疗 科研和生物领域中扮演着至关重要的角色 用于存储和保护对温度极为敏感的样品和药品 然而 由于这些冰箱内的温度波动可能导致样品的损坏 因此对超低温冰箱的监控变得至关重要 客户案例 医疗研究机构 上海某医疗研究机构在其实验室中使
  • 题解 | #Quasi Binary#

    题解 Quasi Binary 这道题只让再可能的数中有0或1出现 那么最少可能方案的数量只可能是每个位上的最大的数字 因为一定要在这个位上减去这个数目的一 才可以将这位变成0 接下来就是按每 题解 奇 妙拆分 这道题思路 很简单 要求最多
  • 求fib数列的第n项,前几项是1,1,2,3,5,每一项都等于前面两项的和

    题解 增加派对名单 二 insert返回None print input split insert 0 Allen insert直接对列表进行操作nam input 题解 删除简历 a input split del a 0 print a
  • Deep learning 七

    使用深度学习模型处理文本 可以将其理解为单词序列或字符序列 时间序列和一般的序列数据 用于处理序列的两种基本的深度学习算法分别是循环神经网络 recurrentneuralnetwork 和一维卷积神经网络 1D convnet 后者是前面
  • 扬帆证券:买卖点指标?

    生意点方针是证券交易中常用的技能分析东西之一 通过分析商场的价格 成交量等方针 来供应对商场生意的辅导定见 本文将从定义 类型 运用办法和优缺陷四个视点来分析生意点方针 一 定义 生意点方针又称为商场拐点方针 是证券交易中用于猜测商场价格未
  • 白噪声下真实正弦波的精确频率估计研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及数据