基于循环平稳特征的认知无线电信号谱相关密度分析系统
项目简介
本项目实现了一个面向认知无线电频谱感知的高精度信号分析系统。针对低信噪比(Low SNR)环境下传统能量检测法失效的问题,系统基于循环平稳(Cyclostationary)信号处理理论,利用信号的周期性统计特征进行检测与识别。项目核心采用FFT累加法(FAM)计算信号的谱相关密度(SCD),从三维视角(物理频率、循环频率、幅度)揭示淹没在噪声中的调制信号特征。
核心功能与特性
- 低信噪比信号检测:能够在 -5dB 等高噪环境下有效提取信号特征。
- 多调制方式仿真:代码实际实现了 BPSK 和 AM 两种调制信号的生成与分析。
- 高效算法实现:采用 FAM(FFT Accumulation Method) 算法,通过两级FFT处理大幅降低了循环谱计算的复杂度。
- 对比分析:集成了传统功率谱密度(PSD)分析(基于Welch法)作为对比,直观展示循环谱在抗噪性上的优势。
- 多维可视化:提供时域波形、传统功率谱、以及 谱相关密度(SCD)三维网格图 的可视化展示。
系统要求
- 运行环境:MATLAB R2016b 及以上版本。
- 工具箱依赖:Signal Processing Toolbox(用于
pwelch, hamming, rectpulse 等函数)。
代码实现逻辑与细节
本项目主要由主控流程和三个核心子功能模块组成。
1. 系统参数初始化与配置
系统首先定义了仿真所需的关键物理参数:
- 采样率
fs (2000 Hz) 与观测时长 T (1.0 s)。 - 载波频率
fc (400 Hz) 与码元速率 Rb (100 Baud)。 - FAM算法特定参数:信道化分辨率
Np (64) 和滑动步长 L (16),这两个参数决定了最终的时频分辨率和循环频率覆盖范围。
2. 信号生成与信道模拟 (generate_signal & add_awgn_noise)
- BPSK调制:生成随机比特流,映射为双极性码(-1/1),使用矩形脉冲成型(
rectpulse),并加载到 400Hz 的余弦载波上。 - AM调制:基于 20Hz 的调制信号生成幅度调制波,调制指数设为 0.5。
- 信道模拟:计算纯净信号功率,根据设定的 SNR (-5dB) 计算噪声功率,并叠加零均值高斯白噪声。
3. 常规频谱分析
代码调用 MATLAB 内置的
pwelch 函数计算含噪信号的功率谱密度。使用 Hamming 窗(长256)和 50% 重叠(128点),这主要用于在结果展示中与 SCD 进行对比,说明在平稳谱视角下信号往往被噪声掩盖。
4. 核心算法:FAM 谱相关密度计算 (fam_algorithm)
这是本项目的核心实现部分,代码通过以下步骤实现了从时域信号到双频域(物理频率 $f$ - 循环频率 $alpha$)的变换:
* 利用类似短时傅里叶变换(STFT)的结构。
* 将输入信号分段,每段长度为
Np (64),应用 Hamming 窗。
* 每隔
L (16) 个点滑动一次,对每一段进行 FFT。
* 生成一个时间和频率的二维矩阵
X_channel。
* 采用双重循环遍历所有信道对 $(k, l)$。
* 计算两个信道输出序列的共轭乘积:$X_k(n) cdot X_l^*(n)$。
* 对该乘积序列在此进行 FFT(点数为
NN),从而将时变特征转换到
循环频率域。
* 代码实现了一个复杂的从信道索引 $(k, l)$ 到物理频率 $f$ 和循环频率 $alpha$ 的映射逻辑。
*
物理频率映射:由 $(k+l)$ 决定。
*
循环频率映射:由粗粒度的信道差 $(k-l)$ 和细粒度的 FFT 频点共同决定。
* 代码采用了非相干累加策略,将各个信道对计算出的频谱幅度累加到最终的
Sx 矩阵中,并进行了归一化处理。此处特别处理了边界检查,确保所有计算出的谱峰都能正确落入
Alpha x Freq 的二维网格中。
5. 结果可视化 (visualize_results)
main 函数最后调用绘图流程,生成包含多个子图的窗口:
- 时域波形:对比展示原始纯净信号和叠加了 -5dB 噪声后的信号,直观呈现信号被噪声淹没的状态。
- 功率谱密度 (PSD):展示传统的频谱分析结果。
- SCD 三维图:使用
mesh 函数绘制谱相关密度的三维图。为了提高绘图性能和可视性,代码对数据进行了阈值处理(去除小于最大值 5% 的底噪数据),并调整视角便于观察在特定的物理频率和循环频率处隆起的谱峰。
使用方法
- 将包含代码的
.m 文件放置于 MATLAB 工作路径中。 - 直接运行
main 函数。 - 控制台将输出当前的系统配置(调制方式、SNR)以及 SCD 算法的计算耗时。
- 运行结束后,系统将弹出一个图形窗口展示分析结果。可以通过观察三维图中的离散谱峰来识别信号的载波频率(对应物理频率轴)和码元速率(对应循环频率轴)。