Matlab 頻譜分析 (Spectral Analysis)

文章目錄

    • 1. 信號預處理 - 去直流分量
    • 2. 快速傅里葉變換(FFT)
    • 3. 功率譜密度(PSD)計算
    • 4. 主頻率檢測
    • 5. 譜質心計算
    • 6. 對數譜顯示
    • 完整的信號處理流程
    • 實際應用示例


1. 信號預處理 - 去直流分量

data = data - mean(data);

數學原理:
去除信號的直流分量(DC offset),即:
xcentered[n]=x[n]?μx_{centered}[n] = x[n] - \muxcentered?[n]=x[n]?μ

其中:

  • μ=1N∑n=0N?1x[n]\mu = \frac{1}{N}\sum_{n=0}^{N-1} x[n]μ=N1?n=0N?1?x[n] 是信號均值
  • NNN 是信號長度

作用: 去除0Hz分量,避免在頻譜圖中出現很大的直流峰值,影響其他頻率成分的觀察。

2. 快速傅里葉變換(FFT)

Y = fft(data, nfft);
f = (0:nfft-1) * fs / nfft;

數學原理:
離散傅里葉變換(DFT)公式:
X[k]=∑n=0N?1x[n]?e?j2πkn/NX[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j2\pi kn/N}X[k]=n=0N?1?x[n]?e?j2πkn/N

其中:

  • k=0,1,...,N?1k = 0, 1, ..., N-1k=0,1,...,N?1 是頻率索引
  • N=nfft=212=4096N = nfft = 2^{12} = 4096N=nfft=212=4096 是FFT點數

頻率分辨率:
Δf=fsnfft\Delta f = \frac{f_s}{nfft}Δf=nfftfs??

頻率向量計算:
f[k]=k?fsnfft,k=0,1,...,nfft?1f[k] = k \cdot \frac{f_s}{nfft}, \quad k = 0, 1, ..., nfft-1f[k]=k?nfftfs??,k=0,1,...,nfft?1

3. 功率譜密度(PSD)計算

PSD = abs(Y).^2 / (fs * nfft);
PSD = PSD(1:nfft/2+1);
f = f(1:nfft/2+1);
PSD(2:end-1) = 2 * PSD(2:end-1);

數學原理:

Step 1: 計算功率譜
PSD[k]=∣X[k]∣2fs?NPSD[k] = \frac{|X[k]|^2}{f_s \cdot N}PSD[k]=fs??NX[k]2?

這里除以 fs?Nf_s \cdot Nfs??N 是為了得到功率譜密度(單位:功率/Hz)。

Step 2: 單邊譜轉換
由于實信號的FFT結果具有共軛對稱性:
X[k]=X?[N?k]X[k] = X^*[N-k]X[k]=X?[N?k]

所以只需要保留前一半頻率(0到fs/2f_s/2fs?/2),但要將功率翻倍(除了0Hz和Nyquist頻率):

PSD(2:end-1) = 2 * PSD(2:end-1);

數學表達:
PSDsingle[k]={PSD[k],k=0或?k=N/22?PSD[k],1≤k<N/2PSD_{single}[k] = \begin{cases} PSD[k], & k = 0 \text{ 或 } k = N/2 \\ 2 \cdot PSD[k], & 1 \leq k < N/2 \end{cases}PSDsingle?[k]={PSD[k],2?PSD[k],?k=0??k=N/21k<N/2?

4. 主頻率檢測

[~, peak_idx] = max(PSD(2:end));
main_freq = f(peak_idx + 1);

數學原理:
找到功率譜密度的最大值對應的頻率:
fmain=arg?max?f>0PSD(f)f_{main} = \arg\max_{f > 0} PSD(f)fmain?=argf>0max?PSD(f)

注意:從索引2開始是為了排除直流分量(0Hz)。

5. 譜質心計算

centroid = sum(f_col .* PSD_col) / sum(PSD_col);

數學原理:
譜質心(Spectral Centroid)是頻譜的"重心":
fcentroid=∑k=0N/2f[k]?PSD[k]∑k=0N/2PSD[k]f_{centroid} = \frac{\sum_{k=0}^{N/2} f[k] \cdot PSD[k]}{\sum_{k=0}^{N/2} PSD[k]}fcentroid?=k=0N/2?PSD[k]k=0N/2?f[k]?PSD[k]?

這是一個加權平均,權重是各頻率的功率。

物理意義:

  • 譜質心反映了信號能量在頻域的分布中心
  • 值越大,說明高頻成分越多
  • 常用于音頻信號分析中表征音色"明亮度"

6. 對數譜顯示

semilogx(f, 10*log10(PSD));

數學原理:
將功率譜密度轉換為分貝(dB)單位:
PSDdB=10log?10(PSD)PSD_{dB} = 10 \log_{10}(PSD)PSDdB?=10log10?(PSD)

使用對數坐標的原因:

  1. 人耳對頻率的感知是對數的
  2. 可以同時顯示大范圍的幅值差異
  3. 更容易觀察低幅值的頻率成分

完整的信號處理流程

原始信號 x[n]↓ (去直流)
中心化信號 x_c[n] = x[n] - μ↓ (FFT)
頻域信號 X[k]↓ (功率計算)
雙邊功率譜 |X[k]|2/(fs·N)↓ (單邊譜轉換)
單邊功率譜密度 PSD[k]↓ (特征提取)
主頻率 + 譜質心

實際應用示例

假設采樣率 fs = 1000 Hz,信號包含50Hz和120Hz兩個正弦波:

t = 0:1/fs:1;
x = sin(2*pi*50*t) + 0.5*sin(2*pi*120*t);

經過上述處理后:

  • 主頻率將是 50 Hz(因為其幅度更大)
  • 譜質心將在 50-120 Hz 之間,偏向50Hz

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

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

相關文章

【實時Linux實戰系列】實時以太網與 TSN 基礎

在實時系統中&#xff0c;網絡通信的實時性和可靠性是確保系統正常運行的關鍵。實時以太網和時間敏感網絡&#xff08;TSN&#xff09;技術為實時數據傳輸提供了強大的支持。TSN通過一系列協議和機制&#xff0c;確保數據能夠在預定的時間內可靠傳輸&#xff0c;滿足工業自動化…

茶顏悅色JAVA面試分享

1、自我介紹項目2、設計一個爆款飲品秒殺系統&#xff1a;如何解決“幽蘭拿鐵”上新時的瞬時10萬QPS&#xff1f;從緩存、限流、庫存扣減到訂單創建的全流程設計。3、訂單超市未支付自動取消&#xff1a;如何實現高精度&#xff08;30分鐘精確到秒&#xff09;且低延遲的訂單狀…

OneCode圖表配置速查手冊

前言 在數據可視化日益成為業務決策核心驅動力的今天&#xff0c;高效、靈活的圖表配置系統已成為開發人員不可或缺的工具。OneCode圖表組件憑借其豐富的圖表類型與精細化的配置能力&#xff0c;為開發者提供了構建專業數據可視化界面的完整解決方案。然而&#xff0c;隨著圖表…

二維碼驅動的獨立站視頻集成方案

一、獨立站視頻嵌入的技術挑戰與架構設計 在獨立站建設中&#xff0c;視頻內容的集成面臨著性能、安全與用戶體驗的三重挑戰。傳統直接嵌入方式會導致頁面加載緩慢&#xff08;平均增加3-5秒首屏時間&#xff09;、服務器帶寬消耗激增&#xff08;單視頻日均播放1000次約產生50…

【STM32】預分頻因子(Prescaler)和重裝載值(Reload Value)

在 STM32 的 獨立看門狗&#xff08;IWDG&#xff09; 中&#xff08;結合上文【STM32】獨立看門狗&#xff08;提供完整實例代碼&#xff09;&#xff09;&#xff0c;為了控制看門狗的超時時間&#xff08;溢出時間&#xff09;&#xff0c;我們主要設置兩個參數&#xff1a;…

從0到1搭建同城O2O外賣平臺:外賣系統源碼架構解析與實戰指南

當下&#xff0c;越來越多的創業者、品牌連鎖商家&#xff0c;甚至社區集群&#xff0c;開始布局屬于自己的本地外賣平臺。而對于軟件開發者和技術團隊而言&#xff0c;如何從0到1搭建一套可落地、可擴展、可持續運營的外賣系統&#xff0c;成為了一個既現實又挑戰性十足的話題…

MySQL 8.0 OCP 1Z0-908 題目解析(16)

題目61 Choose the best answer. Examine this command, which executes successfully: mysqlbackup --defaults-file/backups/server-my.cnf --backup-dir/backups/full copy-backWhich statement is true about the copy-back process? ○ A) It restores files from the da…

WSL命令

以下是 WSL&#xff08;Windows Subsystem for Linux&#xff09;的常用命令大全&#xff0c;涵蓋安裝、管理、網絡、文件交互等場景&#xff0c;方便快速查閱和使用&#xff1a;1. 安裝與版本管理命令說明wsl --install默認安裝 WSL 和 Ubuntuwsl --install -d <發行版名&g…

AI語音訓練——GPT-SoVITS(GSV)

鏈接說明 github項目地址&#xff1a;RVC-Boss/GPT-SoVITS: 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 項目中文說明書&#xff1a; GPT-SoVITS指南//項目說明書里也有在線使用的鏈接 原項目作者B站教學視頻&#xff1a;耗時兩個…

事件委托版本tab欄切換

事件委托&#xff1a;是JavaScript中注冊事件的常用技巧&#xff0c;也稱事件委派、事件代理簡單理解&#xff1a;原本需要注冊在子元素的事件委托給父元素&#xff0c;讓父元素擔當事件監聽的職務優點&#xff1a;減少注冊次數&#xff0c;可提高程序性能原理&#xff1a;事件…

FLAN-T5:規模化指令微調的語言模型

摘要 在將數據集表述為指令的形式上進行語言模型微調&#xff0c;已被證明能夠提升模型性能及其對未見任務的泛化能力。本文探討了指令微調&#xff0c;特別關注以下三個方面&#xff1a;(1) 任務數量的擴展&#xff0c;(2) 模型規模的擴展&#xff0c;以及 (3) 基于鏈式思維&…

設計模式文章

1. 工廠模式 | 菜鳥教程

Xilinx Vivado開發環境快速導出hdf文件(bat批處理)

Xilinx FPGA使用Vivado開發環境創建MicroBlaze軟核或ZYNQ PS側SDK邏輯工程時&#xff0c;需要FPGA側搭建的硬件平臺文件&#xff0c;即hdf文件&#xff0c;常規方式是編譯完成生成bit流文件后&#xff0c;通過File->Export->Export Hardware菜單來導出&#xff0c;在彈出…

UniApp 中實現智能吸頂 Tab 標簽導航效果

前言在移動端應用開發中&#xff0c;Tab 標簽導航是一種常見的交互模式。本文將詳細介紹如何在 UniApp 中實現一個功能完善的智能吸頂 Tab 導航組件&#xff0c;該組件具有以下特性&#xff1a;&#x1f3af; 智能顯示&#xff1a;根據滾動位置動態顯示/隱藏&#x1f4cc; 吸頂…

ElasticSearch快速入門-1

文章目錄Elasticsearch簡介ES概念ES和關系型數據庫的對比正序索引和倒序索引安裝es、kibana、IK分詞器ES操作_cat操作Mapping映射屬性索引庫操作索引庫CRUD文檔CRUD文檔批處理操作Java客戶端操作ESElasticsearch簡介 就是一個搜索引擎數據庫 以下都簡稱ES ES概念 ES和關系型…

【論文撰寫】如何把AI生成的文本公式復制在word中,完整的復制公式,拷貝豆包生成的公式

1、問題描述 AI生成的內容 在對于含有公式的生成內容&#xff0c;直接拷貝到Word 會呈現類Markdown的格式&#xff0c;除了格式上&#xff0c;公式也不是標準格式。 如下列兩個圖片對比 2、工具 這時&#xff0c;就需要用另一個工具進行轉換 Home - Snip Web Mathpix Acc…

【機器學習筆記 Ⅱ】5 矩陣乘法

矩陣乘法是神經網絡、圖形學、科學計算等領域的核心運算&#xff0c;用于高效處理線性變換和批量數據計算。以下是其數學定義、計算規則及實際應用的系統解析。1. 數學定義2. 計算步驟&#xff08;示例&#xff09;3. 代碼實現 (1) Python&#xff08;NumPy&#xff09; import…

【數字后端】- 衡量design的congestion情況

基礎概念 通常在RP的placement之后&#xff0c;就要去去查看設計的Density和Congestion情況。 而congestion的衡量指標有以下兩點&#xff1a; &#xff08;1&#xff09;Overflow Congestion 分析基于一個基本『單元』稱為GCELL: Routing Grid cell. Gcell 是工具自己定義…

Oracle面試題-體系結構

&#x1f4cc;1.如何查看 Oracle 數據庫的版本信息&#xff1f; 1. 標準 SQL 查詢&#xff08;推薦&#xff09; 方法 1&#xff1a;查詢 v$version 視圖&#xff08;最常用&#xff09; SELECT * FROM v$version;輸出示例&#xff1a; BANNER -------------------------------…

Flex布局原理

1.布局原理 flex 是 flexible Box 的縮寫&#xff0c;意為"彈性布局"&#xff0c;用來為盒狀模型提供最大的靈活性&#xff0c;任何一個容器都可以 指定為 flex 布局。 當我們為父盒子設為 flex 布局以后&#xff0c;子元素的 float、clear 和 vertical-align 屬性將…