數字信號處理大實驗2 利用FFT估計信號的頻率

目錄

3.1 實驗目的

3.2 實驗內容與要求

3.3 實驗原理

3.3.1 基于時域求導-頻域乘法的n階導數積分法

3.3.2 基于頻域卷積的雙/多譜線插值法

3.3.3 基于譜峰和滑動平均的多譜線綜合插值方法

3.3.4 基于相鄰顯著譜線的滑動平均綜合插值方法

3.3.5 基于(2)的多步小量時移平均計算法(頻域操作)

3.3.6 基于(5)的多步小量頻移平均計算法(時域操作)

3.4 實驗結果

3.4.1 真實頻率估計

3.4.2 探究采樣點數N對于估計的相對精度(去量綱化)的影響

3.4.3 探究真實頻率對于估計的相對精度的影響

3.4.4 探究初相(采樣起始點)對于估計的相對精度的影響

3.4.5 說明、總結與分析

參考文獻


3.1 實驗目的

  1. 了解電磁通信等實際工程中的一些基本問題及解決思路;
  2. 培養查閱資料解決問題的能力;
  3. 掌握頻偏的概念,加深對于DFTDFT的常用性質(時移/頻移等)的理解;
  4. 設計具備一定準確性、魯棒性的算法,估計單頻正弦型信號的真實頻率;
  5. 探究采樣率固定時,采樣區間長度、起始采樣點、被測信號真實頻率對于計算精確度和穩定性的影響。

3.2 實驗內容與要求

在無噪聲干擾條件下,用8000 Hz采樣率對某387Hz頻率正弦信號進行采樣,采集了77個樣點作為原始信號。

1、在知網、IEEE網站等查找頻率估計方法,利用至少兩種頻率估計方法編程求給定信號的頻率;

2、無噪聲、20dB、10dB、5dB、0dB、-5dB,每個信噪比通過至少100次的平均計算,得到頻偏的方均根;

3、所有算法使用相同點數的FFT [不大于2048點];

4、繪出信噪比(對數)-估計均方誤差圖。

3.3 實驗原理

??????

本仿真實驗筆者一共實現了6種算法(實際只有5種,不包括(2)),包括:

  1. 基于時域求導-頻域乘法的n階導數積分法;
  2. Quinn改進-實部虛部比值與綜合權重的雙譜線插值法;
  3. 基于譜峰和滑動平均的多譜線綜合插值方法;
  4. 基于相鄰顯著譜線的滑動平均綜合插值方法;
  5. 基于(2)的多步小量時移平均計算法(頻域操作);
  6. 基于(5)的多步小量頻移平均計算法(時域操作)。

3.3.1 基于時域求導-頻域乘法的n階導數積分法

Figure 14??????? 華南理工大學電信學院寧更新老師課件 Chapter5-v3 P28

代碼實現

Figure 15??????? 3.3.1 n階導數-頻域范圍內求和的代碼實現

3.3.2 基于頻域卷積的雙/多譜線插值法

  1. 長度為N點的矩形窗的離散傅里葉變換

  1. 對單頻f0正弦型信號時域采樣,采樣序列為y[n]=A*cos(2*π*f0/fs*n+φ),假定f0/fs是有理數,fs>2*f0;周期為N=m*fs/f0 (?m,s.t. ?m*fs/f0∈Z),該信號的DTFT——am=A/2*ejφ, aN-m=A/2*e-jφ,ak=0 for 0<=k<=N-1 and k≠m,N-m

  1. 使用N點矩形窗對正弦信號進行截取,需要保證頻譜分辨率一致,此時正弦信號的DTFT轉化為同樣點數的DFT,am和aN-m的序列號和N有關,可能成為小數;頻譜為DFT的圓周卷積,對N取余,因此得到的譜線的真實譜峰位置索引經常不是整數,這也是頻差δ的來歷;

由于實信號幅度頻譜的正負頻率對稱性,算法截取0到pi的頻率區間,實際由于雙峰卷積造成混疊,從而影響理論插值計算的適用性和準確性。

Figure 16??????? 由于正負頻率的對稱性造成的混疊,fs在4倍f0附近時雙卷積帶來的頻差計算誤差會較小

  1. 筆者的算法主要依據為理論插值計算,并在Quinn方法和文獻[1]的基礎上,通過引入虛部比值和三角函數權重的方式減小頻偏估計的誤差。截斷后信號s的DFT實部虛部分別如下圖所示。

Quinn雙譜線實部比值插值方法:if δ1≥0 and δ2≥0,δ=δ1;elseif δ1<0 and δ2<0,δ=δ2

基于虛部比值的雙譜線插值方法:if δ1≥0 and δ2≥0,δ=δ1;elseif δ1<0 and δ2<0,δ=δ2

Figure 17??????? 公式推導[1](含筆者的條件修正)、算法流程(部分)[1]

Y(m) 、Y(m-1) 和 Y(m+1) 實部的大小與峰值譜線的相位Φ(m)有關,該算法在峰值譜線的相位Φ(m)接近于0或π時,頻率校正精度較高,但當峰值譜線的相位Φ(m)接近于 ±π/2 時,信號頻譜分布與FFT系數的關系如圖1所 示,FFT系數實部序列幅度很小,接近于零,在噪聲干擾下,根據實部序列索引的峰值譜線位置容易出錯,計算的頻偏δ誤差也較大,此時頻率估計精度較低[1]。

代碼實現(部分)

Figure 18??????? 3.3.2算法使用的三角函數綜合權重法,角度是幅度譜峰的極角(相位)

3.3.3 基于譜峰和滑動平均的多譜線綜合插值方法

Figure 19 滑動平均原理[2]

根據截斷后信號s的DFT表達式,可以推導出幅度譜譜峰和索引距離譜峰索引為k的譜線的實部/虛部比值——Figure18(文獻[2]式(5)),在以譜峰索引為中心且左右對稱、索引半徑為m的區間內,i表示當前的絕對值距離,則從1到m按照3.3.2的方法各可以計算并篩選出一個頻偏估計δi ,通過系數乘法配湊進行等權重估計,得到δ

代碼實現(部分)

Figure 20??????? 3.3.3 算法的代碼實現(部分)

3.3.4 基于相鄰顯著譜線的滑動平均綜合插值方法

在以譜峰索引為中心且左右對稱、索引半徑為m的區間內,i表示當前的距離,則從-m到m按照3.3.2的方法各可以計算并篩選出一個頻偏估計δi ,通過系數加法配湊進行等權重估計,得到δ

Figure 21??????? 算法3.3.4 關鍵代碼

3.3.5 基于(2)的多步小量時移平均計算法(頻域操作)

在頻域對于每一個點的DFT系數乘于ej2kπt0/N,t0是小時移量,本實驗設置為一個采樣周期(可以是小數倍的采樣周期,因為是頻域操作);

這種算法不影響譜峰的位置,但是會影響信號的初相,因此可以一定程度上削減初相對于頻偏估計的影響。

Figure 22??????? 算法3.3.5(多步小量時移平均計算法) 核心代碼

3.3.6 基于(5)的多步小量頻移平均計算法(時域操作)

在時域對截斷后信號s進行多步小量頻移,頻移量來自3.3.5算法的頻偏估計,通過凈頻偏存儲、多次自迭代計算,理論上頻偏量會越來越小,突破閾值后可以視作較準確的估計,如果在給定最大迭代次數內未能突破閾值,使用所有迭代過程中的平均頻偏估計值。

Figure 23??????? 算法3.3.6(多步小量時移x多步小量頻移) 核心代碼實現

3.4 實驗結果

3.4.1 真實頻率估計

Figure 24 截斷后信號s,N=77

??? 真實信號頻率387Hz,幅度約為2.7, 初相約為137.8°;

??? 采樣頻率8KHz,頻率精度8000/77=103.90Hz。

??? 下面是部分噪聲強度配比以及部分算法的估計頻率的數值。

未摻雜高斯零均值白噪聲:

(1)PMA_ri_comb_interpolation(3.3.3):324.0058Hz;

(2)Ts_two_p_ri_comb_interpolation (3.3.5):371.8061Hz。

Figure 25 ?????? 5種算法的準確度和門限測試,門限基本上在10dB左右(N=77,縱坐標為4lg(δRMSE))

在3.4.1的情況中,3.3.5小量時移算法效果最佳,信噪比SNR=30dB時去量綱化真實頻偏0.1449。

3.4.2 探究采樣點數N對于估計的相對精度(去量綱化)的影響

Figure 26 N=256,縱坐標4lg(δRMSE)- 2,初相、幅度同原信號

Figure 27??????? N=512,縱坐標4lg(δRMSE)- 2,初相、幅度同原信號

在3.4.2的情況中,3.3.3譜峰滑動平均算法效果最佳,如果把0.5的相對精度(絕對精度8000/256/2=15.625Hz)作為最低合格指標,那么對應到此處的對數坐標是-3.2N=256PMA的門限在-5dB左右,N=512PMA門限在5dB左右;N=256、信噪比SNR=30dB時去量綱化真實頻偏0.136;N=512時,信噪比SNR=30dB時小量時移平均計算法精度稍高,去量綱化真實頻偏0.111。

由于和N=77的原始實驗數據存在不小的相對偏差,尤其是N=512時,相對偏差達到23.4%,因此得出結論:不同的點數對于估計的相對精度有影響,呈現正相關的趨勢,收斂邊界未知。

3.4.3 探究真實頻率對于估計的相對精度的影響

Figure 28 ????? N=256,真實頻率1979Hz,接近fs的1/4,初相、幅度同原信號,縱坐標4lg(δRMSE)- 2

在3.4.3的情況中,3.3.3譜峰滑動平均算法效果最佳,如果把0.5的相對精度作為最低合格指標,那么對應到此處的對數坐標是-3.2,PMA的門限在-5dB左右;N=256、信噪比SNR=30dB時去量綱化真實頻偏0.08017,與實驗原理3.3.2部分Figure 16理論可以互相映證。

3.4.4 探究初相(采樣起始點)對于估計的相對精度的影響

Figure 29 初相0°,幅度2.7(同原信號),頻率1979Hz,N=256,縱坐標4lg(δRMSE)- 2

Figure 30??????? 初相90°,幅度2.7(同原信號),頻率1979Hz,N=256,縱坐標4lg(δRMSE)- 2

在3.4.4的情況中,3.3.3譜峰滑動平均算法效果最佳,如果把0.5的相對精度作為最低合格指標,那么對應到此處的對數坐標是-3.2,PMA的門限在-5dB左右,Adj-MA的門限在15dB左右。

初相為0°,信噪比SNR=30dB時去量綱化真實頻偏0.109;

初相90°,信噪比SNR=30dB時去量綱化真實頻偏0.132;

(原)初相137.8°,信噪比SNR=30dB時去量綱化真實頻偏0.136。

3.4.5 說明、總結與分析

(1)以上的不同信噪比情境下,不同算法的魯棒性和準確度測試采取100次估計值的真實頻偏的方均根作為衡量指標,但仍然具有一定的偶然性,同時表現在一些算法的曲線出現較大的上下波動,這些較大的波動還和特定算法的實現機制有關,可以看出PMA算法、導數求和算法、時移x頻移算法總體具有較高的穩定性;

(2)關于被測信號真實頻率對于相對精度的影響:fs在4倍f0附近具有更佳的估計精度效果,從3.4.2和3.4.3的結果對比可以看出,256點截取,同幅度和初相、同采樣頻率,fs>>4f0的相對精度是0.136,而fs≈4f0的相對精度是0.08017,相對精度倍數差距約為1.7倍;

(3)關于采樣點數對于相對精度的影響:不同的點數對于估計的相對精度有影響,呈現正相關的趨勢,收斂邊界未知。(3.4.2)

(4)關于初相對于相對精度的影響:從3.4.4結果分析,由于有4種算法都是基于三角函數綜合加權的計算公式,初相接近0°或180°時相對精度稍高,對于一般隨機分布的初相基本上沒有精度估計的差異。

參考文獻

[1]侯盼衛,楊錄,王建軍.基于FFT系數的正弦信號頻率估計算法[J].光電技術應用,2013,28(06):58-62.

[2]黃玉春,黃載祿,黃本雄,等.基于FFT滑動平均極大似然法的正弦信號頻率估計[J].電子與信息學報,2008,(04):831-835.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84182.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java】Java元注解

Target(ElementType.METHOD) Retention(value RetentionPolicy.RUNTIME) public interface OperatorLog {String source() default "WEB"; //日志操作來源 默認是web&#xff0c;還有socket的String model() default ""; //操作模塊 }這個代碼中的 Target…

阿里云百煉(1) : 阿里云百煉應用問答_回答圖片問題_方案1_提問時上傳圖片文件

直接用于拍照答題不大理想, 可能適用其他用途, 更好的方案: 阿里云百煉(1) : 阿里云百煉應用問答_回答圖片問題_方案2_提取題目再提問-CSDN博客 1.實現代碼 package cn.nordrassil.ly.test.拍照答題;import com.alibaba.dashscope.app.Application; import com.alibaba.dashsc…

深入探索 CSS 中的偽類:從基礎到實戰?

在前端開發的世界里&#xff0c;CSS 作為網頁樣式的 “化妝師”&#xff0c;有著至關重要的作用。而 CSS 偽類則像是這位 “化妝師” 手中的神奇畫筆&#xff0c;能夠基于元素的狀態或位置為其添加獨特的樣式&#xff0c;極大地豐富了網頁的交互性和視覺效果。接下來&#xff0…

c++ constexpr關鍵字

constexpr字面意思為常量表格式&#xff0c; 用于指示編譯器在編譯時計算表達式的值。 1、作為常量表格式&#xff0c;必須在編譯時就能確定其值。如&#xff1a;constexpr int size 9527; 2、可以修飾函數&#xff0c;要求能在編譯時求值&#xff0c;所以傳的參數也必須是編…

服務器硬盤分類

以下是服務器硬盤的綜合性分類與技術特性分析&#xff0c;依據當前行業標準及技術演進整理&#xff1a; 一、按存儲介質分類 1. ?機械硬盤&#xff08;HDD&#xff09;? ? 核心特性?&#xff1a;采用旋轉磁盤與機械磁頭結構&#xff0c;通過磁道尋址實現數據讀寫 …

圖解深度學習 - 機器學習簡史

前言 深度學習并非總是解決問題的最佳方案&#xff1a;缺乏足夠數據時&#xff0c;深度學習難以施展&#xff1b;某些情況下&#xff0c;其他機器學習算法可能更為高效。 若初學者首次接觸的是深度學習&#xff0c;可能會形成一種偏見&#xff0c;視所有機器學習問題為深度學…

ConceptAttention:Diffusion Transformers learn highly interpretable features

ConceptAttention: Diffusion Transformers Learn Highly Interpretable Featureshttps://arxiv.org/html/2502.04320?_immersive_translate_auto_translate=1用flux的attention來做圖文的顯著性分析。 1.i

【Python正則表達式終極指南】從零到工程級實戰

目錄 &#x1f31f; 前言&#x1f3d7;? 技術背景與價值&#x1fa79; 當前技術痛點&#x1f6e0;? 解決方案概述&#x1f465; 目標讀者說明 &#x1f9e0; 一、技術原理剖析&#x1f4ca; 核心概念圖解&#x1f4a1; 核心作用講解&#x1f527; 關鍵技術模塊說明?? 技術選…

C++對象的內存模型

C++對象的內存模型涉及對象的數據成員(包括靜態成員和非靜態成員)、成員函數以及虛函數表等在內存中的布局和管理方式。以下是C++對象的內存模型的主要組成部分: 1. C++對象的組成 一個C++對象通常由以下幾個部分組成: 非靜態數據成員 對象的核心組成部分,每個對象都有自己…

hugging-face數據集快速下載

開發機配置外網代理并使用 git lfs 高速下載 Hugging Face 數據集流程 本文檔將介紹如何配置開發機的代理&#xff0c;登錄 Hugging Face&#xff0c;并使用 git-lfs &#xff08;Git Large File Storage&#xff09;進行數據集的高速下載。 1. 配置代理連接外網 開發機在某些…

17、Python對象操作全解析:同一運算符、成員運算符與整數緩存機制實戰

適合人群&#xff1a;零基礎自學者 | 編程小白快速入門 閱讀時長&#xff1a;約8分鐘 文章目錄 一、問題&#xff1a;Python 同一運算符的本質與實戰&#xff1f;1、例子1&#xff1a;雙胞胎身份證驗證2、答案&#xff1a;&#xff08;1&#xff09;is 同一運算符介紹&#xff…

使用auto-coder將kotti項目的pyramid依賴從1.x升級到2.x,將SQLALchemy從1.x升級到2.x

緣起 kotti是一個非常好的基于pyramid框架的web搭建項目&#xff0c;但是由于作者離世&#xff0c;已經3年沒有更新了。 嘗試使用auto-coder將kotti項目的pyramid依賴從1.x升級到2.x&#xff0c;同時發現SQLALchemy依賴也有問題&#xff0c;將SQLALchemy從1.x升級到2.x 開始…

luckysheet的使用——17.將表格作為pdf下載到本地

luckysheet源碼里面自帶有打印按鈕&#xff0c;但是功能是無法使用的&#xff0c;所以我把該功能重寫了一遍 1.在menuButton.js文件中找到源碼打印按鈕的觸發事件&#xff1a; $("#luckysheet-icon-print").click(function () {}2.使用自己寫的掛載方法 window.pr…

仿真APP助力提升卡車駕駛室駕乘舒適度與安全性

駕駛室作為卡車的重要組成部分&#xff0c;其振動特性對于駕駛員的舒適度和長期健康具有至關重要的影響。振動不僅會導致駕駛員疲勞、分散注意力&#xff0c;還可能引發一系列健康問題。為了確保卡車在復雜路面工況下駕駛室結構不受破壞&#xff0c;并保持良好的NVH性能&#x…

功能強大且易于使用的 JavaScript 音頻庫howler.js 和AI里如何同時文字跟音頻構思想法

howler.js 是一個功能強大且易于使用的 JavaScript 音頻庫&#xff0c;它提供了跨瀏覽器的音頻播放功能&#xff0c;支持多種音頻格式&#xff0c;并且具有豐富的 API&#xff0c;可以方便地控制音頻的播放、暫停、循環、音量等。下面是如何在 Vue 項目中使用 howler.js 實現音…

JUC入門(七)

14、ForkJoin ForkJoin框架是Java中用于并行執行任務的框架&#xff0c;特別適合處理可以分解為多個子任務的復雜計算。它基于“分而治之”的思想&#xff0c;將一個大任務分解為多個小任務&#xff0c;這些小任務可以并行執行&#xff0c;最后將結果合并。 ForkJoin框架的核…

第 7 章:綜合回顧與性能優化

本章目標: 系統化地回顧各類外設接口選型原則 深入探討多接口并存時的資源沖突與管理策略 掌握軟硬件協同的性能分析方法,快速定位并消除瓶頸 總結一整套從架構設計到現場調試的最佳實踐與防坑指南 7.1 綜合選型決策矩陣(深度分析) 除了前文的基礎矩陣,這里引入兩個更細化…

交換機的連接方式堆疊和級聯

以下是交換機的堆疊和級聯各自的優缺點總結&#xff0c;幫助快速對比選擇&#xff1a; ?一、堆疊&#xff08;Stacking&#xff09;? ?優點 ?高性能 堆疊鏈路帶寬高&#xff08;如10G/40G/100G&#xff09;&#xff0c;成員間數據通過背板直連&#xff0c;無帶寬瓶頸。支…

C++高效求解非線性方程組的實踐指南

非線性方程組的求解是科學與工程計算中的核心問題之一&#xff0c;涉及物理建模、機器學習、金融分析等多個領域。C因其高性能和底層控制能力成為此類問題的首選語言&#xff0c;但如何高效實現求解仍存在諸多挑戰。本文從算法選擇、工具應用、穩定性優化及性能提升四個維度&am…

2025年- H42-Lc150 --146. LRU緩存(哈希表,雙鏈表)需二刷--Java版

1.題目描述 2.思路 LRU(最近最少使用&#xff09;&#xff1a;如果緩存的容量為2&#xff0c;剛開始的兩個元素都入棧。之后該2元素中有其中一個元素&#xff08;重點元素&#xff09;被訪問。把最近訪問過的重點元素保留&#xff0c;另一個邊緣元素就得離開緩存了。 下面是l…