GNU Radio 實數與複數訊號分析
本文內容、開發板及配件僅限用於學校或科研院所開展科研實驗!
溫馨提示:“開源SDR實驗室”是北京的。
本文利用GNU Radio來分析複數訊號,理解什麼是複數訊號,並介紹為什麼要引入複數訊號來分析訊號處理過程。
目錄
一、實驗原理
IQ訊號與IQ調製有關,IQ調製也稱為正交調製,其調製原理圖如下所示:
二、實驗內容
1、實數和複數餘弦訊號
搭建以下GRC程式,執行程式並檢視結果。所有模組的資料型別Type都設定為Float,圖中所有模組的輸入輸出都顯示為橙色 。
上圖顯示,我們得到了一個頻率為1K,幅度為1的餘弦實訊號。
接下來,我們將上述GRC程式中的所有模組的資料型別都修改為Complex後如下圖所示,所有模組的輸入輸出都顯示為藍色 。
執行程式得到如下結果,其中藍色線和綠色線的相位相差了90度,一個為I路,一個為Q路。
2、Hilbert變換
以上是用餘弦訊號作為訊號源,接下來我們分析一下用方波的情況以及用方波進行Hilbert變換的情況,按照下圖搭建方波的程式。注意Signal Source、Throttle、第一個WX GUI Scope Sink和Hilbert的輸入資料型別都是Float。第二個WX GUI Scope Sink的資料型別是Complex。
其中Hilert模組的引數設定如下圖所示。
原始的實數Float方波的時域波形如下圖所示。
原始實數Float方波經過Hilbert變換之後所得到的波形為下圖中的綠線波形所示。
為了檢視方波的複數訊號,我們搭建如下的GRC程式,通過檢視結果與上述Hilbert變換結果對比發現,GRC的複數訊號並不能正確顯示出一個複數方波訊號的Q分量,要想得到真正的Q分量,則需要用Hilbert模組才行。
3、實數訊號與複數訊號區別對比
接下來我們通過以下的兩個餘弦訊號相乘的例子再看一下實數訊號與複數訊號的區別。按照下圖搭建GRC程式。所有模組的資料型別都設定為Float。第一個餘弦訊號的頻率是10KHz,第二個餘弦訊號的頻率是1KHz,根據三角函式公式可知,二者相乘之後得到的訊號的頻率為9K和11KHz,我們利用三個WX GUI FFT Sink來分別檢視10K餘弦實訊號,1KHz餘弦實訊號和9K/11K乘積實訊號的頻譜。
第一個10KHz訊號的頻譜如下圖的Tab1所示:
第二個1KHz訊號的頻譜如下圖的Tab2所示:
10K和1K訊號相乘得到的結果訊號的頻譜如下圖的Tab3所示,這也就驗證了10K和1K訊號相乘得到的結果訊號的頻率是9K和11K。
當我們將上述GRC程式的所有模組資料型別都修改為Complex複數時,如下圖所示。
此時的10K餘弦複數訊號頻譜圖如下:
1K的餘弦複數訊號頻譜圖如下:
而10K*1K餘弦複數訊號的頻譜圖如下所示,我們發現此時只有11KHz訊號頻譜,並不像實數訊號中的那樣還存在一個9KHz訊號頻譜。
三、聯絡方式
淘寶店鋪、QQ技術交流群、CSDN聯絡方式如下:
微信公眾號二維碼:
相關文章
- 數字訊號模擬實驗——實驗一離散時間訊號與系統的時域分析
- 走進“開源SDR實驗室” 一起玩轉GNU Radio:訊號功率測量
- 大牛講解訊號與系統以及數字訊號處理
- Qt 訊號槽如何傳遞引數(或帶引數的訊號槽)QT
- 數字訊號處理實驗一(離散時間訊號的MATLAB實現)Matlab
- 數字訊號處理實驗(四):數字濾波器結構
- 訊號處理基本引數
- [SDR] GNU Radio 系列教程(十四) —— GNU Radio 低階到高階用法的分水嶺 ZMQ 的使用詳解MQ
- 複數與複變函式選題函式
- GNU Make自動變數一覽變數
- L1 複數與複數運算 | matlab視覺化Matlab視覺化
- Python中使用共享變數+訊號量實現程序間的實時通訊Python變數
- linux 下的訊號量引數Linux
- Java併發程式設計實戰--計數訊號量(Semaphore)Java程式設計
- 中文數字與阿拉伯數字:數字符號的文化交融符號
- 數字音訊技術與JUCE實現(目錄)音訊
- 括號匹配;及找數字續分析
- 分析外星訊號
- Semaphore-訊號量的實現分析
- 複數域傅立葉級數
- Swoole 原始碼分析——鎖與訊號量模組原始碼
- 從例項分析ELF格式的.gnu.hash區與glibc的符號查詢符號
- [C]有符號數和無符號數符號
- 網頁js版音訊數字訊號處理:H5錄音+特定頻率訊號的特徵分析和識別提取網頁JS音訊H5特徵
- ReactiveCocoa 中 RACSignal 冷訊號和熱訊號底層實現分析React
- MD 數學符號與公式表達符號公式
- 數字訊號處理c語言程式集C語言
- 週期訊號的傅立葉級數和頻譜
- Verilog有符號數、無符號數之間的賦值與運算符號賦值
- FPGA數字訊號處理(26)加擾器與解擾器設計FPGA
- 細說 ReactiveCocoa 的冷訊號與熱訊號(三):怎麼處理冷訊號與熱訊號React
- GNU與LinuxLinux
- Struts框架 實現複數加減操作框架
- Bold訊號與fNIRS訊號的區別
- 匹配指定位數不重複數字
- 語音訊號預處理——數字濾波器音訊
- 實驗六 連續訊號的頻域分析
- Bloom實現及其數學分析OOM