matlab fftshift_matlab下实现FFT信号分析
奈奎斯特定理:
對于信號分析,我們需要掌握一個定理:
在進行模擬/數字信號的轉換過程中,當采樣頻率?fs.max大于信號中最高頻率 fmax 的 2 倍時(fs.max > 2fmax),采樣之后的數字信號完整地保留了原始信號中的信息,一般實際應用中保證采樣頻率為信號最高頻率的2.56~4倍;采樣定理又稱奈奎斯特定理或香農采樣定理。
利用matlab做頻譜分析前我們需要了解分析過程中的一些基礎知識,
matlab中的 fft 函數用法、fftshift 函數的用法
函數 1??fft?:
作用:快速傅里葉變換。
語法:
Y = fft(X)
Y = fft(X,n)
Y = fft(X,n,dim)
語法:
Y = fft(X)?用快速傅里葉變換 (FFT) 算法計算?X?的離散傅里葉變換?(DFT)。
如果?X?是向量,則?fft(X)?返回該向量的傅里葉變換;
如果?X?是矩陣,則?fft(X)?將?X?的各列視為向量,并返回每列的傅里葉變換;
如果?X?是一個多維數組,則?fft(X)?將沿大小不等于 1 的第一個數組維度的值視為向量,并返回每個向量的傅里葉變換;
Y?= fft(X,n)?返回?n?點 DFT。如果未指定任何值,則?Y?的大小與?X?相同。
如果?X?是向量且?X?的長度小于?n,則為?X?補上尾零以達到長度?n;
如果?X?是向量且?X?的長度大于?n,則對?X?進行截斷以達到長度?n;
如果?X?是矩陣,則每列的處理與在向量情況下相同;
如果?X?為多維數組,則大小不等于 1 的第一個數組維度的處理與在向量情況下相同;
函數 2 fftshift:
作用:將零頻分量移到頻譜中心。
語法:
Y = fftshift(X)
Y = fftshift(X,dim)
說明:
Y = fftshift(X)?通過將零頻分量移動到數組中心,重新排列傅里葉變換 X。
如果 X 是向量,則 fftshift 會將 X 的左右兩半部分進行交換;
如果 X 是矩陣,則 fftshift 會將 X 的第一象限與第三象限交換,將第二象限與第四象限交換;
如果 X 是多維數組,則 fftshift 會沿每個維度交換 X 的半空間;
應用舉例
現有輸入信號 2Hz,ADC 采樣頻率為 500Hz ,滿足采樣定理的要求,目標:對信號進行頻譜分析,找出信號在頻域上的噪聲分量,并設計對應濾波器濾除噪聲,提高信噪比。
新建腳本文件FFT.m,腳本內容如下圖 1:
程序第 3 行定義了信號的采樣頻率為 500Hz,第 4 行定義了采樣周期,第 6 行導入了腳本路徑下的txt數據,第 7 行計算導入數據的長度,第 8 行是計算數據的頻率范圍,,第 9~11 行繪出數據的時域信號波形圖;
程序第 14 ~20?行計算繪制 FFT頻譜圖。
圖 1
程序運行結果如下圖 2 所示,我們可以根據圖 2 所展示的頻譜信息設計相應的濾波電路或軟件算法去除噪聲。另外從圖 2 中可以看出,FFT 變換得到的頻譜是左右對稱的,因此,我們只需要其中一邊就能獲得信號的所有信息。鏈接中演示了怎樣將雙邊頻譜圖轉換為單邊頻譜圖,可參考學習?https://zhuanlan.zhihu.com/p/42893470
圖 2
●貼片晶振的PCB layout需要注意哪些?
●CPU中的程序是怎么運行起來的?
●MOSFET柵極前 100 Ω 電阻有什么用?
●模擬電路設計的這12個細節,往往起著重要作用
●STM32:從菜鳥到牛人就是如此簡單!
●什么是PID?講個故事,秒懂!
●485通信自動收發電路 歷史上最詳細的解釋
總結
以上是生活随笔為你收集整理的matlab fftshift_matlab下实现FFT信号分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js异步请求php数据,原生JS发送异步
- 下一篇: python中怎么比较两个列表的大小_P